{"name":"io.github.alexeibespalov/trident","slug":"alexeibespalov-trident","title":null,"description":"Create and edit collaborative architecture diagrams with any AI assistant using the Trident 2D DSL.","url":"https://mcp.market/server/alexeibespalov-trident","rating":null,"grade":"A","score":86,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-06T12:57:09.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:35:42.255Z","last_ok_at":"2026-11-04T05:35:42.255Z","latency_ms":52},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/alexeibespalov/tridentpublic","website":null,"version":"1.0.2","remotes":[{"type":"streamable-http","url":"https://mcp.tridentchart.com/mcp"}],"packages":[{"registryType":"npm","identifier":"trident-mcp","version":"1.0.2","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional Trident API key for document editing tools. Spec tools work without a key.","name":"TRIDENT_API_KEY"}]}],"tools":[{"name":"add_annotation","description":"Adds a text annotation to a live Trident document. Two visual styles: style:stickyNote (default — post-it card with colored background, good for notes/callouts) or style:textBody (plain transparent text, good for diagram titles and section labels). Ideal for architectural notes, decision records, section labels, or TODO markers. Appears immediately for all collaborators. Requires a valid editor access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"annotation":{"type":"object","description":"Annotation definition","properties":{"id":{"type":"string","description":"Unique ID (no spaces, e.g. \"note_observability\")"},"content":{"type":"string","description":"Text content. Use \\n for line breaks."},"x":{"type":"number","description":"X position in diagram units"},"y":{"type":"number","description":"Y position in diagram units"},"width":{"type":"number","description":"Optional: width in diagram units (default auto)"},"height":{"type":"number","description":"Optional: height in diagram units (default auto)"},"color":{"type":"string","description":"Optional: background color (hex or color name)"},"outlineColor":{"type":"string","description":"Optional: border color"},"textColor":{"type":"string","description":"Optional: text color"},"align":{"type":"string","description":"Optional: text alignment — \"left\", \"center\", or \"right\""},"style":{"type":"string","description":"Optional: \"stickyNote\" (default, post-it card look) or \"textBody\" (plain transparent text, good for titles/labels)"},"fontSize":{"type":"number","description":"Optional: font size in points"},"bold":{"type":"boolean","description":"Optional: bold text"},"italic":{"type":"boolean","description":"Optional: italic text"},"underline":{"type":"boolean","description":"Optional: underlined text"},"strikethrough":{"type":"boolean","description":"Optional: strikethrough text"}},"required":["id","content","x","y"]},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","annotation"]}},{"name":"add_connection","description":"Adds a connection (arrow/edge) between two nodes in a live Trident document. Use get_document_summary to get valid source and target node IDs before calling this. Requires a valid editor access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"connection":{"type":"object","properties":{"id":{"type":"string","description":"Optional: unique ID; auto-generated if omitted"},"source":{"type":"string","description":"ID of the source node"},"target":{"type":"string","description":"ID of the target node"},"label":{"type":"string","description":"Optional: label shown on the connection"},"type":{"type":"string","description":"Optional: connection type (e.g. \"dotted\", \"dashed\", \"bold\", \"wave\")"},"routingMode":{"type":"string","description":"Optional: routing algorithm (e.g. \"straight\", \"bezier\", \"orthogonal\")"}},"required":["source","target"]},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","connection"]}},{"name":"add_container","description":"Adds a new container (group/swimlane) to a live Trident document. Containers visually group related nodes. Use get_document_summary to check existing container IDs before adding to avoid duplicates. Requires a valid editor access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"container":{"type":"object","properties":{"id":{"type":"string","description":"Unique ID for the container (no spaces)"},"label":{"type":"string","description":"Display label for the container header"},"color":{"type":"string","description":"Optional: background color (hex or color name)"},"outlineColor":{"type":"string","description":"Optional: border/outline color (hex or color name), e.g. \"#5B7A99\" for a C4 system boundary."},"x":{"type":"number","description":"Optional: X position"},"y":{"type":"number","description":"Optional: Y position"}},"required":["id","label"]},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","container"]}},{"name":"add_node","description":"Adds a new node (entity) to a live Trident document. The node appears immediately for all collaborators. Requires a valid editor access token. Before adding nodes: call open_document to understand the diagram layout and pick sensible positions; call get_document_summary to get all existing entity IDs so you can avoid duplicates. IMPORTANT: if this node belongs inside a container, pass node.container on THIS call — do NOT create the node without a container and reparent it later via update_node. Orphaned nodes appear immediately to all live collaborators and create unnecessary visual churn.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"node":{"type":"object","description":"Node definition","properties":{"id":{"type":"string","description":"Unique ID for the node (no spaces, e.g. \"api_server\")"},"label":{"type":"string","description":"Display label shown on the diagram"},"icon":{"type":"string","description":"Optional: icon name from the Trident icon library"},"container":{"type":"string","description":"ID of the container this node belongs in. Set this NOW if you know the parent — do not create the node orphaned and reparent later with update_node. Treat this as required whenever the node has a logical parent container."},"x":{"type":"number","description":"Optional: X position in diagram units"},"y":{"type":"number","description":"Optional: Y position (screen coords — larger Y is lower on screen)"},"shapeType":{"type":"string","description":"Optional: shape type. Default \"rectangle\"; \"diamond\" for decisions. Registered collections: Flowchart (\"flowchart-process\", \"flowchart-rounded\", \"flowchart-stadium\", \"flowchart-cylinder\", \"flowchart-circle\", \"flowchart-double-circle\", \"flowchart-decision\", \"flowchart-hexagon\", \"flowchart-parallelogram\", \"flowchart-trapezoid\", etc.), BPMN (\"bpmn-start-event\", \"bpmn-end-event\", \"bpmn-gateway\", \"bpmn-task\", \"bpmn-user-task\", \"bpmn-subprocess\", etc.; labels render under events/gateways), UML (\"uml-class\", \"uml-interface\", \"uml-package\", \"uml-component\", \"uml-database\", \"uml-actor\", \"uml-state\", \"uml-action\", etc.), General primitives (\"circle\", \"cylinder\", \"hexagon\", \"rounded-rect\", \"parallelogram\", \"trapezoid\", etc.), or Organic (\"cloud\", \"star\", \"heart\", etc.). Unknown values fall back to rectangle."},"card":{"type":"string","description":"Optional: markdown content for an expandable info card"},"color":{"type":"string","description":"Optional: background/fill color (hex like \"#438DD5\" or a color name). Set on THIS call — do not add the node and recolor it later with update_node."},"textColor":{"type":"string","description":"Optional: label text color (hex or color name), e.g. \"#FFFFFF\"."},"outlineColor":{"type":"string","description":"Optional: border/outline color (hex or color name)."}},"required":["id","label"]},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","node"]}},{"name":"delete_annotation","description":"Removes a text annotation from a live Trident document. Use get_document_summary to get all annotation IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"annotationId":{"type":"string","description":"ID of the annotation to delete"},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","annotationId"]}},{"name":"delete_connection","description":"Removes a connection from a live Trident document. Provide either the connectionId, or both source and target node IDs to find and remove the matching connection. Use get_document_summary to get all connection IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"connectionId":{"type":"string","description":"ID of the connection to delete (preferred)"},"source":{"type":"string","description":"Source node ID (use with target if connectionId unknown)"},"target":{"type":"string","description":"Target node ID (use with source if connectionId unknown)"},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId"]}},{"name":"delete_container","description":"Removes a container from a live Trident document. By default, nodes inside are detached (kept on the diagram without a container). Pass deleteNodes: true to remove the container's nodes as well. Use get_document_summary to get all container IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"containerId":{"type":"string","description":"ID of the container to delete"},"deleteNodes":{"type":"boolean","description":"If true, also delete all nodes inside the container (default false)"},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","containerId"]}},{"name":"delete_node","description":"Removes a node from a live Trident document. All connections to/from this node are also removed automatically. Use get_document_summary to get all node IDs before calling this. This action is reversible via Ctrl+Z in the Trident editor. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"nodeId":{"type":"string","description":"ID of the node to delete"},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","nodeId"]}},{"name":"explain","description":"Delivers an explanation payload to human collaborators watching the document, optionally anchored to a specific node or container. Use this when you want to explain what a diagram element represents, why it exists, or how it relates to other parts of the system — without suggesting a change. The explanation appears in the UI attributed to you. Does NOT mutate the diagram. Requires a valid viewer or editor access token. IMPORTANT: this tool automatically pauses (3–15 s, proportional to explanation length) before returning, so the human has time to read. Do NOT add your own artificial delays between explain calls — the pacing is built in.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Viewer or editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting."},"explanation":{"type":"string","description":"The explanation text to deliver to human collaborators (max 1000 chars)."},"entityId":{"type":"string","description":"ID of the node or container being explained. Always provide this when explaining a specific element — it moves the AI cursor to that element so collaborators can follow along."}},"required":["token","agentId","userName","explanation"]}},{"name":"get_comprehensive_example","description":"Returns a comprehensive Trident example demonstrating all syntax features including containers, nodes (traditional and bracket-style syntax), diamond/rectangle shapes, icons, connections with labels, routing modes, cards, and text annotations. Use this to see all features in action.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"required":[]}},{"name":"get_document_png","description":"Renders the current state of a live Trident document as a PNG image directly from the Yjs collaborative session — bypassing Firestore, which may be stale. Returns a base64-encoded PNG. Use this to visually verify that diagram edits look correct before or after making changes.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Access token for this document. The document ID is embedded in the token."}},"required":["token"]}},{"name":"get_document_summary","description":"Returns a complete structured summary of a Trident document as JSON: all node IDs, container IDs, connection IDs, annotation IDs, labels, and entity counts. Use this for PROGRAMMATIC OPERATIONS — it is never truncated regardless of diagram size, so you always get every entity ID. Use this before any bulk update, delete, or enumeration task. To read and understand the diagram as a human-readable diagram, use open_document instead. Requires a valid access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Access token for this document. The document ID is embedded in the token."}},"required":["token"]}},{"name":"get_generator_guide","description":"Returns LLM-optimized instructions for generating Trident diagrams, including quick reference, critical rules (especially Y-axis!), spacing guidelines, common patterns, color conventions, and error prevention checklist. Use this before generating any Trident diagram.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"required":[]}},{"name":"get_quick_start","description":"Returns a condensed 2-minute quick-start guide with minimal working examples, core syntax reference, and key concepts. Use this for rapid learning when you need to generate simple diagrams quickly.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"required":[]}},{"name":"get_recent_changes","description":"Returns the recent change history for a live Trident document. Each entry shows who made the change, what was changed, and when. Useful for understanding what edits have been made by AI agents or human collaborators. Requires a valid access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Access token for this document. The document ID is embedded in the token."},"since":{"type":"number","description":"Optional: Unix timestamp in milliseconds — only return changes after this time"},"limit":{"type":"number","description":"Optional: Maximum number of entries to return (default 100, max 500)"}},"required":["token"]}},{"name":"get_trident_spec","description":"Returns the complete Trident 2D specification including grammar, syntax rules, coordinate system, containers, nodes, connections, shapes, and icon reference. Use this when you need deep understanding of the Trident DSL.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"required":[]}},{"name":"make_suggestion","description":"Posts a visible suggestion to human collaborators watching the document WITHOUT making any changes to the diagram. Use this when you observe something worth flagging — a potential mistake, an improvement, or a question — but want the human to decide. The suggestion appears as a bold \"SUGGESTION:\" callout in the UI with a radar pulse animation on your presence dot for 10 seconds. Does NOT mutate the diagram. Requires a valid viewer or editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Viewer or editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting."},"suggestion":{"type":"string","description":"The suggestion text to show to human collaborators (max 500 chars). Be concise and actionable."},"entityId":{"type":"string","description":"ID of the node or container this suggestion relates to. Always provide this when the suggestion concerns a specific element — it moves the AI cursor to that element so collaborators know exactly what you are referring to."}},"required":["token","agentId","userName","suggestion"]}},{"name":"open_document","description":"Opens a live Trident document and returns its full contents as Trident markup DSL — the human-readable text format used to author diagrams. Use this to READ and UNDERSTAND the diagram: its structure, labels, connections, and layout. Do NOT rely on this to enumerate entity IDs for programmatic use — the DSL can be very large and the output may be truncated. To get a complete, structured list of all entity IDs and counts, use get_document_summary instead. Requires a valid access token.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."}},"required":["token"]}},{"name":"update_annotation","description":"Updates an existing text annotation in a live Trident document. Only the fields you provide are changed. Use get_document_summary to get all annotation IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"annotationId":{"type":"string","description":"ID of the annotation to update"},"changes":{"type":"object","description":"Fields to update. Only provided fields are changed.","properties":{"content":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"width":{"type":"number"},"height":{"type":"number"},"color":{"type":"string"},"outlineColor":{"type":"string"},"textColor":{"type":"string"},"align":{"type":"string"},"style":{"type":"string"},"fontSize":{"type":"number"},"bold":{"type":"boolean"},"italic":{"type":"boolean"},"underline":{"type":"boolean"},"strikethrough":{"type":"boolean"}}},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","annotationId","changes"]}},{"name":"update_canvas_graphic","description":"Repositions or resizes a background image (canvas graphic) in a live Trident document. Use open_document to get the canvas graphic ID and current dimensions — it appears as: image <id> \"<url>\" at (x, y) width:W height:H. The position at (x, y) is the TOP-LEFT corner. USE THIS BEFORE placing many geographically-positioned nodes: if the background map is small (e.g. width < 700), scale it up so nodes have room to breathe and do not overlap. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\")."},"userName":{"type":"string","description":"First name of the human you are assisting."},"canvasGraphicId":{"type":"string","description":"ID of the canvas graphic to update (from open_document output)."},"changes":{"type":"object","description":"Geometry fields to update. Only provided fields are changed; all others are preserved.","properties":{"x":{"type":"number","description":"New top-left X position in canvas units."},"y":{"type":"number","description":"New top-left Y position in canvas units."},"width":{"type":"number","description":"New width in canvas units. Increase this to scale the map up."},"height":{"type":"number","description":"New height in canvas units. Increase this to scale the map up."},"aspectLock":{"type":"boolean","description":"Lock aspect ratio on resize (default true)."}},"required":[]},"action_explanation":{"type":"string","description":"Optional: brief explanation shown live to human collaborators (max 250 chars)."}},"required":["token","agentId","canvasGraphicId","changes"]}},{"name":"update_container","description":"Updates properties of an existing container in a live Trident document. Only provided fields are changed. Use get_document_summary to get all container IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"containerId":{"type":"string","description":"ID of the container to update"},"changes":{"type":"object","properties":{"label":{"type":"string"},"color":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"}}},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","containerId","changes"]}},{"name":"update_node","description":"Updates properties of an existing node in a live Trident document. Only the fields you provide are changed; others are preserved. Use get_document_summary to get all node IDs before calling this. Requires a valid editor access token.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Editor access token for this document. The document ID is embedded in the token."},"agentId":{"type":"string","description":"YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot."},"userName":{"type":"string","description":"First name of the human you are assisting (ask them at session start if you do not know). Shown in the collaboration presence dot as \"[agentId] working with [userName]\"."},"nodeId":{"type":"string","description":"ID of the node to update"},"changes":{"type":"object","description":"Fields to update. Only provided fields are changed.","properties":{"label":{"type":"string"},"icon":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"shapeType":{"type":"string","description":"Optional: shape type. \"rectangle\", \"diamond\", or a collection shape: Flowchart (\"flowchart-*\"), BPMN (\"bpmn-*\"), UML (\"uml-*\"), General primitives (\"circle\", \"cylinder\", \"hexagon\", \"rounded-rect\", etc.), or Organic (\"cloud\", \"star\", etc.)."},"container":{"type":"string","description":"Set to a container ID to move this node into that container; set to empty string \"\" to remove from its current container"},"card":{"type":"string","description":"Set to empty string \"\" to remove card"},"color":{"type":"string","description":"Background color (hex or color name)"},"outlineColor":{"type":"string"},"textColor":{"type":"string"}}},"action_explanation":{"type":"string","description":"Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip."}},"required":["token","agentId","nodeId","changes"]}},{"name":"validate_trident","description":"Returns a comprehensive validation checklist for Trident diagrams covering syntax rules, semantic rules, best practices, and common mistakes to avoid. Use this after generating a diagram to verify correctness.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"diagram":{"type":"string","description":"Optional: The Trident diagram code to include context-specific validation tips"}}}}],"scan":{"score":86,"grade":"A","scanned_at":"2026-09-27T12:18:14.765Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T12:18:14.746Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 336ms"]},"poisoning":{"score":15,"max":15,"notes":["23 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 9 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 21 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.tridentchart.com/mcp","reachable":true,"authRequired":false,"latencyMs":336,"serverInfo":{"name":"trident-mcp-server","version":"1.0.0"}}],"packages":[{"registryType":"npm","identifier":"trident-mcp","version":"1.0.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-05-30T21:21:19.686Z","repositoryUrl":"git+https://github.com/alexeibespalov/tridentpublic.git"}],"repo":{"found":true,"owner":"alexeibespalov","repo":"tridentpublic","archived":false,"pushedAt":"2026-09-06T12:57:09Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/9437873?v=4","ownerCreatedAt":"2014-10-28T20:18:46Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/9437873?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-06T12:57:09.000Z","score":20}}}},"grade_history":[],"reviews":[]}