# io.github.alexeibespalov/trident (remote · mcp.tridentchart.com)

Create and edit collaborative architecture diagrams with any AI assistant using the Trident 2D DSL.

- Trust score: 49/100 (low)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.tridentchart.com`: 49/100 (this document), [markdown](https://verifymcp.io/servers/alexeibespalov-trident/mcp.md), [page](https://verifymcp.io/servers/alexeibespalov-trident/mcp)
- npm · `trident-mcp`: 39/100, [markdown](https://verifymcp.io/servers/alexeibespalov-trident/trident-mcp.md), [page](https://verifymcp.io/servers/alexeibespalov-trident/trident-mcp)

## Channel facts

- Endpoint: `https://mcp.tridentchart.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: this server exposes a tool marked destructive (delete_node) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 28/100
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 5084 tokens (~221/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http alexeibespalov-trident https://mcp.tridentchart.com/mcp
```

### Codex

```toml
[mcp_servers.alexeibespalov-trident]
url = "https://mcp.tridentchart.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "alexeibespalov-trident": {
      "type": "remote",
      "url": "https://mcp.tridentchart.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add alexeibespalov-trident --url https://mcp.tridentchart.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  alexeibespalov-trident:
    url: "https://mcp.tridentchart.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "alexeibespalov-trident": {
      "type": "http",
      "url": "https://mcp.tridentchart.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 48, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 47, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 46, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 45, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 45)

First indexed and scored.

## MCP tools (23)

### `get_trident_spec` (~53 tokens)

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.

### `get_generator_guide` (~56 tokens)

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.

### `get_comprehensive_example` (~60 tokens)

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.

### `validate_trident` (~64 tokens)

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.

Input parameters:

- `diagram` (string): Optional: The Trident diagram code to include context-specific validation tips

### `get_quick_start` (~46 tokens)

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.

### `open_document` (~220 tokens)

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.

Input parameters:

- `agentId` (string): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `token` (string, required): Access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `get_document_summary` (~124 tokens)

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.

Input parameters:

- `token` (string, required): Access token for this document. The document ID is embedded in the token.

### `get_recent_changes` (~121 tokens)

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.

Input parameters:

- `limit` (number): Optional: Maximum number of entries to return (default 100, max 500)
- `since` (number): Optional: Unix timestamp in milliseconds — only return changes after this time
- `token` (string, required): Access token for this document. The document ID is embedded in the token.

### `add_node` (~278 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `node` (object, required): Node definition
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `update_node` (~232 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `changes` (object, required): Fields to update. Only provided fields are changed.
- `nodeId` (string, required): ID of the node to update
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `delete_node` (~226 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `nodeId` (string, required): ID of the node to delete
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `add_container` (~209 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `container` (object, required)
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `update_container` (~217 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `changes` (object, required)
- `containerId` (string, required): ID of the container to update
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `delete_container` (~253 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `containerId` (string, required): ID of the container to delete
- `deleteNodes` (boolean): If true, also delete all nodes inside the container (default false)
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `add_connection` (~205 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `connection` (object, required)
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `delete_connection` (~260 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `connectionId` (string): ID of the connection to delete (preferred)
- `source` (string): Source node ID (use with target if connectionId unknown)
- `target` (string): Target node ID (use with source if connectionId unknown)
- `token` (string, required): Editor access token for this document. The document ID is embedded in the token.
- `userName` (string): 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]".

### `get_document_png` (~87 tokens)

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.

Input parameters:

- `token` (string, required): Access token for this document. The document ID is embedded in the token.

### `add_annotation` (~239 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `annotation` (object, required): Annotation definition
- `token` (string, required): Editor access token for this document.
- `userName` (string): 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]".

### `update_annotation` (~218 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `annotationId` (string, required): ID of the annotation to update
- `changes` (object, required): Fields to update. Only provided fields are changed.
- `token` (string, required): Editor access token for this document.
- `userName` (string): 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]".

### `delete_annotation` (~193 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation of what this action does and why (max 250 chars). Shown live to human collaborators in the AI cursor tooltip.
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `annotationId` (string, required): ID of the annotation to delete
- `token` (string, required): Editor access token for this document.
- `userName` (string): 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]".

### `update_canvas_graphic` (~246 tokens)

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.

Input parameters:

- `action_explanation` (string): Optional: brief explanation shown live to human collaborators (max 250 chars).
- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot").
- `canvasGraphicId` (string, required): ID of the canvas graphic to update (from open_document output).
- `changes` (object, required): Geometry fields to update. Only provided fields are changed; all others are preserved.
- `token` (string, required): Editor access token for this document.
- `userName` (string): First name of the human you are assisting.

### `make_suggestion` (~248 tokens)

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.

Input parameters:

- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `entityId` (string): 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…
- `suggestion` (string, required): The suggestion text to show to human collaborators (max 500 chars). Be concise and actionable.
- `token` (string, required): Viewer or editor access token for this document.
- `userName` (string, required): First name of the human you are assisting.

### `explain` (~266 tokens)

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.

Input parameters:

- `agentId` (string, required): YOUR AI assistant name (e.g. "Claude.ai", "GitHub Copilot"). Shown as "[agentId] working with [userName]" in the collaboration presence dot.
- `entityId` (string): 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.
- `explanation` (string, required): The explanation text to deliver to human collaborators (max 1000 chars).
- `token` (string, required): Viewer or editor access token for this document.
- `userName` (string, required): First name of the human you are assisting.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/alexeibespalov-trident/mcp#diagnostics

## Score history

- 2026-08-03: 49
- 2026-08-02: 48
- 2026-08-01: 48
- 2026-07-31: 47
- 2026-07-30: 47
- 2026-07-29: 47
- 2026-07-28: 46
- 2026-07-27: 45
- 2026-07-26: 45

## Links

- Remote endpoint: https://mcp.tridentchart.com/mcp
- Repository: https://github.com/alexeibespalov/tridentpublic
- Changelog RSS feed: https://verifymcp.io/servers/alexeibespalov-trident/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/alexeibespalov-trident/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/alexeibespalov-trident/mcp
