# Irenic Table

A free, general-purpose, collaborative, virtual whiteboard app in the spirit of the superstar commercial apps Mural and Miro.

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y @smithery/cli@latest mcp add benevolabs/irenictable

# Browse available tools
npx -y @smithery/cli@latest tool list benevolabs/irenictable

# Get full schema for a tool
npx -y @smithery/cli@latest tool get benevolabs/irenictable list_boards

# Call a tool
npx -y @smithery/cli@latest tool call benevolabs/irenictable list_boards '{}'
```

## Direct MCP Connection

Endpoint: `https://irenictable--benevolabs.run.tools`

## Tools (40)

- `list_boards` — List boards the authenticated user can access
- `create_board` — Create a new board and connect to it for real-time manipulation. Call get_instructions after connecting to load spatial…
- `delete_board` — Delete a board permanently. Only the board owner can delete a board. If the board being deleted is currently connected,…
- `connect_board` — Connect to an existing board for real-time object manipulation
- `disconnect_board` — Disconnect from the current board
- `get_board_info` — Get metadata and summary of the currently connected board
- `create_object` — SPATIAL: x,y is the top-left corner, not center. Space objects ≥250px center-to-center (≥400px with labeled connectors)…
- `create_objects` — Batch-create multiple objects atomically — preferred for diagrams and layouts. Use "ref" for local names, "$ref:name" f…
- `update_object` — Update properties of an existing object. Only specified fields are changed. To parent objects inside a frame, update th…
- `update_objects` — Update properties on multiple objects in a single atomic transaction. Each item specifies an object ID and the properti…
- `delete_object` — Remove a single object from the board
- `delete_objects` — Remove multiple objects from the board in a single transaction
- `list_objects` — List objects on the connected board with optional filtering by type, frame, or text search. Alias type filters "sticky"…
- `get_object` — Get full details of a single object by ID
- `mindmap_tidy` — Re-run recursive layout on a mind map or subtree. Call after adding nodes, manual edits, or when nodes overlap. If node…
- `read_board_as_text` — Get a structured text overview of the connected board. Shows frames with their contents, connectors between objects, an…
- `read_frame` — Get the contents of a specific frame, listed with their positions and properties
- `get_server_status` — Diagnostic snapshot of the MCP server: version, profile, transport, auth state, and board connection. Call this first t…
- `verify_connection` — Pre-flight diagnostic: actively tests auth, API reachability, user validity, and board connection. Returns pass/fail pe…
- `list_folders` — List all folders for the authenticated user. Returns folder hierarchy with IDs, names, parent relationships, and positi…
- `list_tags` — List all tag definitions on the connected board. Returns tag IDs, names, colors, and descriptions. Tags are used to cat…
- `create_tag` — Create a new tag definition on the board. Tags can then be applied to objects via tag_objects or by including tagIds in…
- `delete_tag` — Delete a tag definition from the board. By default also removes the tag from all objects that reference it.
- `tag_objects` — Apply a tag to one or more objects. Adds the tag ID to each object's tagIds array (idempotent — won't duplicate if alre…
- `untag_objects` — Remove a tag from one or more objects.
- `c4_add_element` — Create a C4 diagram element (person, software system, container, or component). Auto-applies correct shape, color, and …
- `c4_add_boundary` — Create a C4 boundary frame (system, container, enterprise, or deployment node). Size to fit elements with ≥100px paddin…
- `c4_connect` — Create a C4 relationship (connector) between two elements. Auto-formats label: description line + [technology] line. Da…
- `align_objects` — Align multiple objects along an axis. Auto-constrains to parent frame when objects share one. "left"/"center"/"right" f…
- `distribute_objects` — Distribute objects evenly along an axis. With 3+ objects, spaces equally between outermost objects (or with a fixed gap…
- `layout_grid` — Arrange objects in a grid layout. Auto-detects parent frame and constrains to its content area. Default gap is 20px — i…
- `layout_tree` — Arrange objects in a tree layout with a root and children. Default levelGap=200px provides room for labeled connectors.…
- `rotate_objects` — Rotate one or more objects. In relative mode (default), adds the angle to each object's current rotation. In absolute m…
- `group_objects` — Group multiple objects into an invisible container (like Cmd+G in the web UI). Computes a bounding box around all child…
- `ungroup_objects` — Dissolve a group, freeing its children as independent objects (like Cmd+Shift+G in the web UI). The group container is …
- `z_order` — Change the z-order (stacking position) of an object. bring_to_front/send_to_back move to the absolute top/bottom. bring…
- `lock_objects` — Lock one or more objects to prevent accidental editing or moving. Locked objects cannot be moved, resized, or deleted i…
- `unlock_objects` — Unlock one or more previously locked objects, restoring normal editing.
- `get_instructions` — IMPORTANT: Call this tool at the start of every session before creating or modifying objects on the board. Returns spat…
- `get_suggested_prompts` — Returns context-aware suggested prompts based on the current board state. Call after connecting to a board to offer the…

```bash
# Get full input/output schema for a tool
npx -y @smithery/cli@latest tool get benevolabs/irenictable <tool-name>
```
