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

Server definition

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

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Creates elements on a canvas. Creates a new canvas if room_id is omitted, or adds to the existing canvas if room_id is provided. Use cases: wireframes, UI mockups, freeform illustrations, standalone shapes, and manual layouts that Mermaid does not cover well. For diagrams Mermaid can express, use add_elements_from_mermaid instead. Element types: rectangle, ellipse, diamond, arrow, line, freedraw, text, image. Rich text: the text field supports limited HTML for text elements and rectangle/ellipse/diamond shape labels. Supports the rich-text plugin HTML subset: <b>/<strong>, <i>/<em>, <u>, <br>, <div>/<p>, <ul>/<ol>/<li>, <a href>, <font color>, and <span style=\"color, background/background-color, font-size, font-family\">. Use textAlign for left/center/right alignment; avoid unsupported HTML/CSS. TEXT IN SHAPES: use containerId on text element pointing to shape id. ARROWS: Position at EDGE of source shape. Auto-bound within 30px. Colors: strokeColor, backgroundColor (hex).", "inputSchema": { "properties": { "elements": { "description": "Array of element definitions to create", "items": { "description": "Per-type required fields: rectangle/ellipse/diamond → x, y (width/height default to 100). text → x, y, text (width/height auto-sized; omit or set to 0). rectangle/ellipse/diamond may also include text, which creates a bound label. arrow/line → x, y, points (e.g. [[0,0],[100,0]]); optionally startBinding/endBinding instead of points. image → x, y, width, height, fileId. freedraw → x, y, points. type is inferred from fields if omitted (text field → text, points → line, fileId → image, else rectangle).", "properties": { "backgroundColor": { "description": "Fill color in hex or 'transparent' (default: transparent)", "type": "string" }, "containerId": { "description": "For type=text: ID of the shape this text is bound to. Set x,y to 0,0 for auto-centering inside the shape.", "type": "string" }, "endBinding": { "description": "For type=arrow: binds the arrow end to a shape. Use instead of or alongside points.", "properties": { "elementId": { "type": "string" }, "focus": { "type": "number" }, "gap": { "type": "number" } }, "required": [ "elementId", "focus", "gap" ], "type": "object" }, "fillStyle": { "description": "Fill style: solid, hachure, cross-hatch (default: solid)", "type": "string" }, "fontFamily": { "description": "Font family: 5=Excalifont, 6=Nunito, 7=Lilita One, 8=Comic Shanns (default: 5). Applies to text elements.", "type": "number" }, "fontSize": { "description": "Font size (default: 20). Applies to text elements.", "type": "number" }, "height": { "description": "Height (default: 100; omit for text — auto-sized)", "type": "number" }, "id": { "description": "Unique element ID. IMPORTANT: Always set explicit IDs for shapes that arrows will connect to!", "type": "string" }, "label": { "description": "For type=arrow: text label displayed on the arrow", "type": "string" }, "opacity": { "description": "Opacity 0-100 (default: 100)", "type": "number" }, "points": { "description": "Required for arrow/line/freedraw. Coordinates relative to element x,y. Example: [[0,0],[100,0]] for horizontal arrow.", "items": { "items": { "type": "number" }, "type": "array" }, "type": "array" }, "roughness": { "description": "Roughness: 0=architect, 1=artist, 2=cartoonist (default: 1)", "type": "number" }, "startBinding": { "description": "For type=arrow: binds the arrow start to a shape. Use instead of or alongside points.", "properties": { "elementId": { "type": "string" }, "focus": { "type": "number" }, "gap": { "type": "number" } }, "required": [ "elementId", "focus", "gap" ], "type": "object" }, "strokeColor": { "description": "Stroke color in hex (default: #1e1e1e)", "type": "string" }, "strokeWidth": { "description": "Stroke width (default: 2)", "type": "number" }, "text": { "description": "Text content. Required for type=text. For text elements and rectangle/ellipse/diamond shape labels, Supports the rich-text plugin HTML subset: <b>/<strong>, <i>/<em>, <u>, <br>, <div>/<p>, <ul>/<ol>/<li>, <a href>, <font color>, and <span style=\"color, background/background-color, font-size, font-family\">. Use textAlign for left/center/right alignment; avoid unsupported HTML/CSS. Also used as arrow label when set on an arrow.", "type": "string" }, "type": { "description": "Element type. Inferred from fields if omitted: text field → text, points → line, fileId → image, else rectangle.", "enum": [ "rectangle", "ellipse", "diamond", "arrow", "line", "freedraw", "text", "image" ], "type": "string" }, "width": { "description": "Width (default: 100; omit for text — auto-sized)", "type": "number" }, "x": { "description": "X coordinate (defaults to 0 if omitted)", "type": "number" }, "y": { "description": "Y coordinate (defaults to 0 if omitted)", "type": "number" } }, "required": [ "x", "y" ], "type": "object" }, "type": "array" }, "room_id": { "description": "Room ID of an existing canvas to add to. If the user is continuing a canvas already referenced in this conversation (by room_id, or a URL like ?room=[room_id] or /gdrive?id=[room_id]), pass it here. Omit to create a new canvas.", "type": "string" } }, "required": [ "elements" ], "type": "object" }, "name": "add_elements", "outputSchema": { "properties": { "appState": { "additionalProperties": true, "description": "Canvas app state (viewBackgroundColor, etc.)", "properties": { "viewBackgroundColor": { "type": "string" } }, "type": "object" }, "collabUrl": { "description": "Collaboration server URL for Socket.IO", "type": "string" }, "elements": { "description": "All elements currently on the canvas", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "isNew": { "description": "Whether a new canvas was created", "type": "boolean" }, "room_id": { "description": "Canvas room ID", "type": "string" }, "url": { "description": "Canvas room URL", "type": "string" } }, "required": [ "url", "isNew", "collabUrl", "elements", "appState" ], "type": "object" } }, { "description": "Creates diagram elements from a Mermaid definition. Creates a new canvas if room_id is omitted, or adds to the existing canvas if room_id is provided. Preferred over add_elements for new diagrams and large changes to existing diagrams whenever the content can be represented in Mermaid. Supports: flowchart, graph, flowchart-elk, sequenceDiagram, classDiagram, classDiagram-v2, stateDiagram, stateDiagram-v2, erDiagram, journey, gantt, pie, gitGraph, mindmap, timeline, C4Context, C4Container, C4Component, C4Dynamic, C4Deployment, sankey, sankey-beta, quadrantChart, xychart, xychart-beta, requirement, requirementDiagram, kanban, architecture, block, block-beta, packet, packet-beta, radar-beta, treemap, info. Example: \"flowchart TD\\n A[Start] --> B{Decision}\\n B -->|Yes| C[OK]\\n B -->|No| D[Cancel]\"", "inputSchema": { "properties": { "config": { "description": "Optional Mermaid rendering config. flowchart.curve is handled automatically.", "properties": { "flowchart": { "properties": { "curve": { "description": "Edge curve style (handled server-side; no need to set explicitly).", "enum": [ "basis", "linear" ], "type": "string" } }, "type": "object" } }, "type": "object" }, "mermaid": { "description": "Mermaid diagram definition. Prefer converting compatible user requests into Mermaid instead of using add_elements.", "type": "string" }, "room_id": { "description": "Room ID of an existing canvas to add to. If the user is continuing a canvas already referenced in this conversation (by room_id, or a URL like ?room=[room_id] or /gdrive?id=[room_id]), pass it here. Omit to create a new canvas.", "type": "string" }, "timeout": { "default": 3600, "description": "Room lifetime in seconds (default: 3600, max: 86400). Only used when creating new canvas", "type": "number" } }, "required": [ "mermaid" ], "type": "object" }, "name": "add_elements_from_mermaid", "outputSchema": { "properties": { "appState": { "additionalProperties": true, "description": "Canvas app state (viewBackgroundColor, etc.)", "properties": { "viewBackgroundColor": { "type": "string" } }, "type": "object" }, "collabUrl": { "description": "Collaboration server URL for Socket.IO", "type": "string" }, "elements": { "description": "All elements currently on the canvas", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "isNew": { "description": "Whether a new canvas was created", "type": "boolean" }, "pendingMermaid": { "description": "Mermaid definition pending client-side rendering", "properties": { "config": { "additionalProperties": true, "type": "object" }, "definition": { "description": "Mermaid diagram source", "type": "string" } }, "type": "object" }, "room_id": { "description": "Canvas room ID", "type": "string" }, "url": { "description": "Canvas room URL", "type": "string" } }, "required": [ "url", "isNew", "collabUrl", "elements", "appState" ], "type": "object" } }, { "description": "Delete elements from a canvas. Requires room_id from a previous Canvs tool result. Pass ids array of element IDs to delete.", "inputSchema": { "properties": { "ids": { "description": "Array of element IDs to delete", "items": { "type": "string" }, "type": "array" }, "room_id": { "description": "Room ID from a previous Canvs tool result. If you only have a URL, extract it from https://[host]/?room=[room_id] or https://[host]/gdrive?id=[room_id].", "type": "string" } }, "required": [ "room_id", "ids" ], "type": "object" }, "name": "delete_elements", "outputSchema": { "properties": { "appState": { "additionalProperties": true, "description": "Canvas app state (viewBackgroundColor, etc.)", "properties": { "viewBackgroundColor": { "type": "string" } }, "type": "object" }, "collabUrl": { "description": "Collaboration server URL for Socket.IO", "type": "string" }, "elements": { "description": "All elements currently on the canvas", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "isNew": { "description": "Whether a new canvas was created", "type": "boolean" }, "room_id": { "description": "Canvas room ID", "type": "string" }, "url": { "description": "Canvas room URL", "type": "string" } }, "required": [ "url", "isNew", "collabUrl", "elements", "appState" ], "type": "object" } }, { "description": "Returns guidance on diagram-creation workflow and tool selection: how to choose between Mermaid and manual element creation, and the recommended iteration workflow. Consult before building complex diagrams.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_guide", "outputSchema": { "properties": { "guide": { "description": "Tool usage instructions text", "type": "string" } }, "required": [ "guide" ], "type": "object" } }, { "description": "Query elements on a canvas. Requires room_id from a previous Canvs tool result. Returns elements matching optional filters. Use this before update_elements when making small edits to existing diagrams. If no browser has the canvas open, returns an error — ask the user to open the canvas URL in their browser and retry.", "inputSchema": { "properties": { "filter": { "description": "Additional key-value filters (e.g., {locked: true})", "type": "object" }, "room_id": { "description": "Room ID from a previous Canvs tool result. If you only have a URL, extract it from https://[host]/?room=[room_id] or https://[host]/gdrive?id=[room_id].", "type": "string" }, "type": { "description": "Filter by element type", "enum": [ "rectangle", "ellipse", "diamond", "arrow", "line", "freedraw", "text", "image" ], "type": "string" } }, "required": [ "room_id" ], "type": "object" }, "name": "query_elements", "outputSchema": { "properties": { "count": { "description": "Number of matching elements", "type": "number" }, "elements": { "description": "Matching elements", "type": "array" } }, "required": [ "count", "elements" ], "type": "object" } }, { "description": "Update elements on a canvas. Requires room_id from a previous Canvs tool result. Pass elements array with id and fields to update. IMPORTANT: in each update object ONLY `id` is required; all other fields are optional patch fields. Include ONLY elements that need changes; elements omitted from the request remain unchanged on the board. Prefer this tool for SMALL edits to existing diagrams (rename/move/restyle a few elements), typically after query_elements.", "inputSchema": { "properties": { "elements": { "description": "Array of element updates (each must have id)", "items": { "description": "Patch object: only id is required. Include only the fields you want to change.", "properties": { "backgroundColor": { "description": "New fill color (hex or 'transparent')", "type": "string" }, "fillStyle": { "description": "New fill style (solid, hachure, cross-hatch)", "type": "string" }, "fontFamily": { "description": "New font family (5=Excalifont, 6=Nunito, 7=Lilita One, 8=Comic Shanns)", "type": "number" }, "fontSize": { "description": "New font size (for text elements)", "type": "number" }, "height": { "description": "New height", "type": "number" }, "id": { "description": "ID of the element to update (required)", "type": "string" }, "locked": { "description": "Lock/unlock the element", "type": "boolean" }, "opacity": { "description": "New opacity (0-100)", "type": "number" }, "points": { "description": "New points array (for arrow/line/freedraw elements)", "items": { "items": { "type": "number" }, "type": "array" }, "type": "array" }, "roughness": { "description": "New roughness (0=architect, 1=artist, 2=cartoonist)", "type": "number" }, "strokeColor": { "description": "New stroke color (hex)", "type": "string" }, "strokeWidth": { "description": "New stroke width", "type": "number" }, "text": { "description": "New text content. For text elements and rectangle/ellipse/diamond shape labels, Supports the rich-text plugin HTML subset: <b>/<strong>, <i>/<em>, <u>, <br>, <div>/<p>, <ul>/<ol>/<li>, <a href>, <font color>, and <span style=\"color, background/background-color, font-size, font-family\">. Use textAlign for left/center/right alignment; avoid unsupported HTML/CSS. Shape text updates the bound label.", "type": "string" }, "type": { "description": "New element type", "enum": [ "rectangle", "ellipse", "diamond", "arrow", "line", "freedraw", "text", "image" ], "type": "string" }, "width": { "description": "New width", "type": "number" }, "x": { "description": "New X coordinate", "type": "number" }, "y": { "description": "New Y coordinate", "type": "number" } }, "required": [ "id" ], "type": "object" }, "type": "array" }, "room_id": { "description": "Room ID from a previous Canvs tool result. If you only have a URL, extract it from https://[host]/?room=[room_id] or https://[host]/gdrive?id=[room_id].", "type": "string" } }, "required": [ "room_id", "elements" ], "type": "object" }, "name": "update_elements", "outputSchema": { "properties": { "appState": { "additionalProperties": true, "description": "Canvas app state (viewBackgroundColor, etc.)", "properties": { "viewBackgroundColor": { "type": "string" } }, "type": "object" }, "collabUrl": { "description": "Collaboration server URL for Socket.IO", "type": "string" }, "elements": { "description": "All elements currently on the canvas", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "isNew": { "description": "Whether a new canvas was created", "type": "boolean" }, "room_id": { "description": "Canvas room ID", "type": "string" }, "url": { "description": "Canvas room URL", "type": "string" } }, "required": [ "url", "isNew", "collabUrl", "elements", "appState" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:aadad9b16e8c5f796d88ee93d5b1d8b56613a77f67c643fcadcc145a85b3778f | sha256sum