Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,556Letters: 14Defects: 1,331counted 2 min ago
teppi

Server definition

Hash
sha256:f1f639ed8459a565e1b92c85a12cb36ee56295a5211f0c4dbfc449c54a4c0595
What it is
What a remote MCP server returned when asked what it offers: 23 tools

The blob, as servednamed by its sha256

{ "instructions": "You are connected to the Trident collaborative diagramming platform.\n\nBEFORE generating any diagram, ALWAYS call get_generator_guide first — it contains critical rules, spacing guidelines, and error prevention. Without it you will produce incorrect output. If you need deeper syntax understanding, call get_trident_spec. For a quick overview, call get_quick_start.\n\nBEFORE using any document tool, ask the human their first name: \"What's your name?\" Use it to personalise every interaction and pass it as the userName field on every tool call.\n\nWhen calling any tool with an agentId parameter, set it to YOUR OWN AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\", \"Gemini\"). Never use \"AI Agent\" or leave it blank.\n\nThe userName field is the human's first name as they told you. Together agentId + userName produce the collaboration presence label: \"GitHub Copilot working with Alexei\".\n\nWhen explaining actions via action_explanation, address the user by name and keep it concise (e.g. \"Adding a load balancer node for Alexei's API tier\").\n\nSTAYING IN SYNC WITH OTHER COLLABORATORS:\n- Many tool responses (open_document, get_document_summary, add_node, update_node, etc.) may include a \"changesSinceYourLast\" field listing edits made by OTHER collaborators since your last tool call. The DSL returned by open_document carries the same information as a leading \"%% changes-since-your-last:\" comment block.\n- When this field is present and non-empty, treat it as fresh news: someone else changed the diagram between your previous and current actions. Read the entries before planning your next mutations so you don't overwrite or duplicate their work.\n- Absence of the field means no relevant changes since your last call (or this is your first call — in which case open_document gives you the full state).\n- The field only reports changes that happened BETWEEN your tool calls. While you are deliberating between calls, more edits may be in flight — do not assume the diagram is frozen.\n\nGRID LAYOUT — read this before placing containers in a grid:\n- Estimate each container's OWN node count before placing anything. A container with 2 nodes in 1 row occupies ~280 wide × ~130 tall units. A container with 6 nodes across 3 rows occupies ~280 wide × ~480 tall.\n- Set spacing per row/column based on THAT row/column's actual content, not the largest container in the grid. Never use uniform spacing sized for the biggest case.\n- Node spacing within a container: ~120 units horizontal, ~160 units vertical between nodes.\n- Container-to-container gap: 60–100 units of clear space between container edges — NOT between their origin points.\n- Formula: next_container_x = prev_container_x + prev_container_width + 80. Same logic for Y.\n- If one container will have significantly more nodes than the others in its row, give that ROW extra vertical space; keep other rows tight.\n\nNODE CREATION EFFICIENCY — prevents visual churn for live collaborators:\n- ALWAYS pass \"container\" directly in add_node when the node belongs inside one. NEVER create a node without its container and fix it later with update_node.\n- Correct sequence: add_container → add_node (with container field set) → add_connection.\n- Anti-pattern to avoid: add_container → add_node (no container) → update_node to reparent. This exposes orphaned floating nodes to all collaborators during creation and wastes API calls.\n- The container field is NOT optional when you know the parent — treat it as required in that case.\n\nC4 CONTAINER DIAGRAMS (see get_generator_guide for the full spec):\n- There is no dedicated C4 tool. Build one from the normal tools: the system boundary is an add_container, in-scope containers are add_node calls with their \"container\" field set to the boundary, people and external systems are add_node calls left outside it, and relationships are add_connection with the transport technology in square brackets on the label (e.g. \"Makes API calls [JSON/HTTPS]\").\n- Set the C4 palette ON the creating call — add_node now accepts color/textColor/outlineColor and add_container accepts outlineColor, so you never need a follow-up update_node just to recolor. Use color:#08427B for people, color:#438DD5 for containers, color:#999999 for external systems (all textColor:#FFFFFF), and color:#F2F6FA outlineColor:#5B7A99 for the boundary.\n- Put the stereotype on its own label line via <br/>: «Person», «Container: technology», or «Software System».", "tools": [ { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "annotation": { "description": "Annotation definition", "properties": { "align": { "description": "Optional: text alignment — \"left\", \"center\", or \"right\"", "type": "string" }, "bold": { "description": "Optional: bold text", "type": "boolean" }, "color": { "description": "Optional: background color (hex or color name)", "type": "string" }, "content": { "description": "Text content. Use \\n for line breaks.", "type": "string" }, "fontSize": { "description": "Optional: font size in points", "type": "number" }, "height": { "description": "Optional: height in diagram units (default auto)", "type": "number" }, "id": { "description": "Unique ID (no spaces, e.g. \"note_observability\")", "type": "string" }, "italic": { "description": "Optional: italic text", "type": "boolean" }, "outlineColor": { "description": "Optional: border color", "type": "string" }, "strikethrough": { "description": "Optional: strikethrough text", "type": "boolean" }, "style": { "description": "Optional: \"stickyNote\" (default, post-it card look) or \"textBody\" (plain transparent text, good for titles/labels)", "type": "string" }, "textColor": { "description": "Optional: text color", "type": "string" }, "underline": { "description": "Optional: underlined text", "type": "boolean" }, "width": { "description": "Optional: width in diagram units (default auto)", "type": "number" }, "x": { "description": "X position in diagram units", "type": "number" }, "y": { "description": "Y position in diagram units", "type": "number" } }, "required": [ "id", "content", "x", "y" ], "type": "object" }, "token": { "description": "Editor access token for this document.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "annotation" ], "type": "object" }, "name": "add_annotation", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "connection": { "properties": { "id": { "description": "Optional: unique ID; auto-generated if omitted", "type": "string" }, "label": { "description": "Optional: label shown on the connection", "type": "string" }, "routingMode": { "description": "Optional: routing algorithm (e.g. \"straight\", \"bezier\", \"orthogonal\")", "type": "string" }, "source": { "description": "ID of the source node", "type": "string" }, "target": { "description": "ID of the target node", "type": "string" }, "type": { "description": "Optional: connection type (e.g. \"dotted\", \"dashed\", \"bold\", \"wave\")", "type": "string" } }, "required": [ "source", "target" ], "type": "object" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "connection" ], "type": "object" }, "name": "add_connection", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "container": { "properties": { "color": { "description": "Optional: background color (hex or color name)", "type": "string" }, "id": { "description": "Unique ID for the container (no spaces)", "type": "string" }, "label": { "description": "Display label for the container header", "type": "string" }, "outlineColor": { "description": "Optional: border/outline color (hex or color name), e.g. \"#5B7A99\" for a C4 system boundary.", "type": "string" }, "x": { "description": "Optional: X position", "type": "number" }, "y": { "description": "Optional: Y position", "type": "number" } }, "required": [ "id", "label" ], "type": "object" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "container" ], "type": "object" }, "name": "add_container", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "node": { "description": "Node definition", "properties": { "card": { "description": "Optional: markdown content for an expandable info card", "type": "string" }, "color": { "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.", "type": "string" }, "container": { "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.", "type": "string" }, "icon": { "description": "Optional: icon name from the Trident icon library", "type": "string" }, "id": { "description": "Unique ID for the node (no spaces, e.g. \"api_server\")", "type": "string" }, "label": { "description": "Display label shown on the diagram", "type": "string" }, "outlineColor": { "description": "Optional: border/outline color (hex or color name).", "type": "string" }, "shapeType": { "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.", "type": "string" }, "textColor": { "description": "Optional: label text color (hex or color name), e.g. \"#FFFFFF\".", "type": "string" }, "x": { "description": "Optional: X position in diagram units", "type": "number" }, "y": { "description": "Optional: Y position (screen coords — larger Y is lower on screen)", "type": "number" } }, "required": [ "id", "label" ], "type": "object" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "node" ], "type": "object" }, "name": "add_node", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "annotationId": { "description": "ID of the annotation to delete", "type": "string" }, "token": { "description": "Editor access token for this document.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "annotationId" ], "type": "object" }, "name": "delete_annotation", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "connectionId": { "description": "ID of the connection to delete (preferred)", "type": "string" }, "source": { "description": "Source node ID (use with target if connectionId unknown)", "type": "string" }, "target": { "description": "Target node ID (use with source if connectionId unknown)", "type": "string" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId" ], "type": "object" }, "name": "delete_connection", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "containerId": { "description": "ID of the container to delete", "type": "string" }, "deleteNodes": { "description": "If true, also delete all nodes inside the container (default false)", "type": "boolean" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "containerId" ], "type": "object" }, "name": "delete_container", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "nodeId": { "description": "ID of the node to delete", "type": "string" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "nodeId" ], "type": "object" }, "name": "delete_node", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "entityId": { "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.", "type": "string" }, "explanation": { "description": "The explanation text to deliver to human collaborators (max 1000 chars).", "type": "string" }, "token": { "description": "Viewer or editor access token for this document.", "type": "string" }, "userName": { "description": "First name of the human you are assisting.", "type": "string" } }, "required": [ "token", "agentId", "userName", "explanation" ], "type": "object" }, "name": "explain", "outputSchema": null }, { "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.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_comprehensive_example", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "token": { "description": "Access token for this document. The document ID is embedded in the token.", "type": "string" } }, "required": [ "token" ], "type": "object" }, "name": "get_document_png", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "token": { "description": "Access token for this document. The document ID is embedded in the token.", "type": "string" } }, "required": [ "token" ], "type": "object" }, "name": "get_document_summary", "outputSchema": null }, { "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.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_generator_guide", "outputSchema": null }, { "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.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_quick_start", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "limit": { "description": "Optional: Maximum number of entries to return (default 100, max 500)", "type": "number" }, "since": { "description": "Optional: Unix timestamp in milliseconds — only return changes after this time", "type": "number" }, "token": { "description": "Access token for this document. The document ID is embedded in the token.", "type": "string" } }, "required": [ "token" ], "type": "object" }, "name": "get_recent_changes", "outputSchema": null }, { "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.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_trident_spec", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "entityId": { "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.", "type": "string" }, "suggestion": { "description": "The suggestion text to show to human collaborators (max 500 chars). Be concise and actionable.", "type": "string" }, "token": { "description": "Viewer or editor access token for this document.", "type": "string" }, "userName": { "description": "First name of the human you are assisting.", "type": "string" } }, "required": [ "token", "agentId", "userName", "suggestion" ], "type": "object" }, "name": "make_suggestion", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "token": { "description": "Access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token" ], "type": "object" }, "name": "open_document", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "annotationId": { "description": "ID of the annotation to update", "type": "string" }, "changes": { "description": "Fields to update. Only provided fields are changed.", "properties": { "align": { "type": "string" }, "bold": { "type": "boolean" }, "color": { "type": "string" }, "content": { "type": "string" }, "fontSize": { "type": "number" }, "height": { "type": "number" }, "italic": { "type": "boolean" }, "outlineColor": { "type": "string" }, "strikethrough": { "type": "boolean" }, "style": { "type": "string" }, "textColor": { "type": "string" }, "underline": { "type": "boolean" }, "width": { "type": "number" }, "x": { "type": "number" }, "y": { "type": "number" } }, "type": "object" }, "token": { "description": "Editor access token for this document.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "annotationId", "changes" ], "type": "object" }, "name": "update_annotation", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation shown live to human collaborators (max 250 chars).", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\").", "type": "string" }, "canvasGraphicId": { "description": "ID of the canvas graphic to update (from open_document output).", "type": "string" }, "changes": { "description": "Geometry fields to update. Only provided fields are changed; all others are preserved.", "properties": { "aspectLock": { "description": "Lock aspect ratio on resize (default true).", "type": "boolean" }, "height": { "description": "New height in canvas units. Increase this to scale the map up.", "type": "number" }, "width": { "description": "New width in canvas units. Increase this to scale the map up.", "type": "number" }, "x": { "description": "New top-left X position in canvas units.", "type": "number" }, "y": { "description": "New top-left Y position in canvas units.", "type": "number" } }, "required": [], "type": "object" }, "token": { "description": "Editor access token for this document.", "type": "string" }, "userName": { "description": "First name of the human you are assisting.", "type": "string" } }, "required": [ "token", "agentId", "canvasGraphicId", "changes" ], "type": "object" }, "name": "update_canvas_graphic", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "changes": { "properties": { "color": { "type": "string" }, "label": { "type": "string" }, "x": { "type": "number" }, "y": { "type": "number" } }, "type": "object" }, "containerId": { "description": "ID of the container to update", "type": "string" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "containerId", "changes" ], "type": "object" }, "name": "update_container", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "action_explanation": { "description": "Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.", "type": "string" }, "agentId": { "description": "YOUR AI assistant name (e.g. \"Claude.ai\", \"GitHub Copilot\"). Shown as \"[agentId] working with [userName]\" in the collaboration presence dot.", "type": "string" }, "changes": { "description": "Fields to update. Only provided fields are changed.", "properties": { "card": { "description": "Set to empty string \"\" to remove card", "type": "string" }, "color": { "description": "Background color (hex or color name)", "type": "string" }, "container": { "description": "Set to a container ID to move this node into that container; set to empty string \"\" to remove from its current container", "type": "string" }, "icon": { "type": "string" }, "label": { "type": "string" }, "outlineColor": { "type": "string" }, "shapeType": { "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.).", "type": "string" }, "textColor": { "type": "string" }, "x": { "type": "number" }, "y": { "type": "number" } }, "type": "object" }, "nodeId": { "description": "ID of the node to update", "type": "string" }, "token": { "description": "Editor access token for this document. The document ID is embedded in the token.", "type": "string" }, "userName": { "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]\".", "type": "string" } }, "required": [ "token", "agentId", "nodeId", "changes" ], "type": "object" }, "name": "update_node", "outputSchema": null }, { "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.", "inputSchema": { "properties": { "diagram": { "description": "Optional: The Trident diagram code to include context-specific validation tips", "type": "string" } }, "type": "object" }, "name": "validate_trident", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f1f639ed8459a565e1b92c85a12cb36ee56295a5211f0c4dbfc449c54a4c0595 | sha256sum