Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
tldraw SDK --- name: tldraw description: tldraw infinite canvas SDK for React. Use when: (1) Creating whiteboard/canvas applications, (2) Building diagramming tools, (3) Programmatically creating and managing shapes, (4) Setting up real-time collaboration, (5) Exporting canvas as SVG/PNG/JSON, (6) Customizing tools, shapes, or UI. --- tldraw SDK Infinite canvas platform for building whiteboard, diagramming, and collaborative to Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Freshness
Last checked 4/14/2026
Best For
tldraw-skill is best for view, replace workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
tldraw SDK --- name: tldraw description: tldraw infinite canvas SDK for React. Use when: (1) Creating whiteboard/canvas applications, (2) Building diagramming tools, (3) Programmatically creating and managing shapes, (4) Setting up real-time collaboration, (5) Exporting canvas as SVG/PNG/JSON, (6) Customizing tools, shapes, or UI. --- tldraw SDK Infinite canvas platform for building whiteboard, diagramming, and collaborative to
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 14, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 14, 2026
Vendor
Metasolbot
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.
Setup snapshot
git clone https://github.com/metasolbot/tldraw-skill.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Metasolbot
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
typescript
import { Tldraw } from 'tldraw'
import 'tldraw/tldraw.css'
export default function App() {
return (
<div style={{ position: 'fixed', inset: 0 }}>
<Tldraw />
</div>
)
}typescript
<Tldraw persistenceKey="my-app" />
typescript
import { Editor, Tldraw } from 'tldraw'
function App() {
const handleMount = (editor: Editor) => {
// Create a shape
editor.createShape({
type: 'text',
x: 100,
y: 100,
props: {
text: 'Hello World'
}
})
// Select and zoom to it
editor.selectAll()
editor.zoomToSelection({ animation: { duration: 1000 } })
}
return <Tldraw onMount={handleMount} />
}typescript
// Text
editor.createShape({
type: 'text',
x: 0, y: 0,
props: { text: 'Hello' }
})
// Rectangle
editor.createShape({
type: 'geo',
x: 0, y: 0,
props: { w: 100, h: 100, geo: 'rectangle' }
})
// Arrow
editor.createShape({
type: 'arrow',
x: 0, y: 0,
props: {
start: { x: 0, y: 0, type: 'point' },
end: { x: 100, y: 100, type: 'point' }
}
})
// Image
editor.createShape({
type: 'image',
x: 0, y: 0,
assetId: 'asset-id'
})typescript
// Batch multiple changes into one transaction
editor.run(() => {
editor.createShapes([shape1, shape2, shape3])
editor.sendToBack(shape1)
editor.selectNone()
})
// Ignore undo/redo history
editor.run(
() => editor.createShapes(myShapes),
{ history: 'ignore' }
)typescript
// Get all shapes on current page const shapes = editor.getCurrentPageShapes() // Get selected shapes const selected = editor.getSelectedShapes() // Find shape by ID const shape = editor.getShape(shapeId) // Get sorted shapes (z-order) const sorted = editor.getCurrentPageShapesSorted()
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
tldraw SDK --- name: tldraw description: tldraw infinite canvas SDK for React. Use when: (1) Creating whiteboard/canvas applications, (2) Building diagramming tools, (3) Programmatically creating and managing shapes, (4) Setting up real-time collaboration, (5) Exporting canvas as SVG/PNG/JSON, (6) Customizing tools, shapes, or UI. --- tldraw SDK Infinite canvas platform for building whiteboard, diagramming, and collaborative to
Infinite canvas platform for building whiteboard, diagramming, and collaborative tools in React.
Website: https://tldraw.com
Docs: https://tldraw.dev
GitHub: https://github.com/tldraw/tldraw
NPM: npm install tldraw @tldraw/sync
import { Tldraw } from 'tldraw'
import 'tldraw/tldraw.css'
export default function App() {
return (
<div style={{ position: 'fixed', inset: 0 }}>
<Tldraw />
</div>
)
}
This gives you a full working canvas with drawing, shapes, text, images, undo/redo, copy/paste.
<Tldraw persistenceKey="my-app" />
Saves to browser localStorage. Also syncs between tabs with same key.
import { Editor, Tldraw } from 'tldraw'
function App() {
const handleMount = (editor: Editor) => {
// Create a shape
editor.createShape({
type: 'text',
x: 100,
y: 100,
props: {
text: 'Hello World'
}
})
// Select and zoom to it
editor.selectAll()
editor.zoomToSelection({ animation: { duration: 1000 } })
}
return <Tldraw onMount={handleMount} />
}
// Text
editor.createShape({
type: 'text',
x: 0, y: 0,
props: { text: 'Hello' }
})
// Rectangle
editor.createShape({
type: 'geo',
x: 0, y: 0,
props: { w: 100, h: 100, geo: 'rectangle' }
})
// Arrow
editor.createShape({
type: 'arrow',
x: 0, y: 0,
props: {
start: { x: 0, y: 0, type: 'point' },
end: { x: 100, y: 100, type: 'point' }
}
})
// Image
editor.createShape({
type: 'image',
x: 0, y: 0,
assetId: 'asset-id'
})
// Batch multiple changes into one transaction
editor.run(() => {
editor.createShapes([shape1, shape2, shape3])
editor.sendToBack(shape1)
editor.selectNone()
})
// Ignore undo/redo history
editor.run(
() => editor.createShapes(myShapes),
{ history: 'ignore' }
)
// Get all shapes on current page
const shapes = editor.getCurrentPageShapes()
// Get selected shapes
const selected = editor.getSelectedShapes()
// Find shape by ID
const shape = editor.getShape(shapeId)
// Get sorted shapes (z-order)
const sorted = editor.getCurrentPageShapesSorted()
// Update properties
editor.updateShapes([
{ id: shapeId, type: 'text', props: { text: 'Updated' } }
])
// Delete
editor.deleteShapes([shapeId])
// Move to back/front
editor.sendToBack([shapeId])
editor.bringToFront([shapeId])
// Rotate
editor.rotateShapesBy([shapeId], 45)
// Duplicate
editor.duplicateShapes([shapeId])
// Select shapes
editor.selectShapes([shapeId1, shapeId2])
// Select all
editor.selectAll()
// Deselect
editor.selectNone()
// Get selected
editor.getSelectedShapeIds()
// Zoom to selection
editor.zoomToSelection()
// Zoom
editor.zoomIn()
editor.zoomOut()
editor.zoomToFit()
// Pan
editor.pan({ x: 100, y: 100 })
// Set viewport
editor.setCamera({
x: 100,
y: 100,
z: 1.5
})
// Zoom to selection with animation
editor.zoomToSelection({
animation: { duration: 500 }
})
import { Tldraw } from 'tldraw'
import { useSyncDemo } from '@tldraw/sync'
import 'tldraw/tldraw.css'
export default function App() {
const store = useSyncDemo({ roomId: 'my-room' })
return (
<div style={{ position: 'fixed', inset: 0 }}>
<Tldraw store={store} />
</div>
)
}
Features:
Open in multiple windows/devices to test.
const svgString = await editor.getSvgString(shapeIds)
console.log(svgString)
const blob = await editor.getPNGBuffer(shapeIds)
// blob is a Blob of PNG image data
// Get all records (shapes, pages, etc.)
const records = editor.store.allRecords()
// Serialize
const json = JSON.stringify(records)
// Save/send/etc.
// Get current state for debugging/analysis
const json = editor.store.serialize('json')
// Track reactive values
import { track } from 'tldraw'
const SelectedCount = track(() => {
const editor = useEditor()
return <div>{editor.getSelectedShapeIds().length}</div>
})
const unsub = editor.on('change', () => {
console.log('Document changed')
const shapes = editor.getCurrentPageShapes()
})
// Cleanup
unsub()
// React to specific shape updates
editor.on('record', (update) => {
console.log('Record changed:', update)
})
select — Selection tooldraw — Freehand drawingeraser — Erase shapestext — Add textrectangle — Rectangle shapediamond — Diamond shapeellipse — Ellipse shapearrow — Arrow connectorline — Line shapeeditor.setCurrentTool('draw')
editor.setCurrentTool('text')
text — Text boxgeo — Rectangle, diamond, ellipse, cloud, etc.arrow — Connectorsline — Linesframe — Artboard/containerimage — Imagesvideo — Video embedsbookmark — Web links (appears as card)<Tldraw readOnly />
Disables all editing. Users can view and interact with canvas but can't modify.
<Tldraw persistenceKey="app" darkMode />
import {
TldrawEditor,
UI,
DefaultToolbar,
DefaultUiAssetResolver,
} from 'tldraw'
<TldrawEditor {...args}>
<UI />
<DefaultToolbar />
</TldrawEditor>
Can replace UI components with custom versions.
editor.updateInstanceState({
isGridMode: false, // Hide grid
showBindings: false, // Hide connection dots
})
const shapes = []
// Add boxes
for (let i = 0; i < 3; i++) {
shapes.push({
type: 'geo',
x: i * 150,
y: 0,
props: {
w: 100,
h: 100,
geo: 'rectangle',
text: `Item ${i}`
}
})
}
// Add connecting arrows
for (let i = 0; i < shapes.length - 1; i++) {
shapes.push({
type: 'arrow',
x: i * 150 + 100,
y: 50,
props: {
start: { type: 'point', x: 0, y: 0 },
end: { type: 'point', x: 50, y: 0 }
}
})
}
editor.run(() => {
editor.createShapes(shapes)
})
// Save to backend
async function saveCanvas() {
const records = editor.store.allRecords()
await fetch('/api/save', {
method: 'POST',
body: JSON.stringify(records)
})
}
// Load from backend
async function loadCanvas(docId) {
const response = await fetch(`/api/load/${docId}`)
const records = await response.json()
editor.store.deserialize(records, 'json')
}
Key Editor Methods:
createShape(shape) / createShapes(shapes[])updateShape(partial) / updateShapes(partial[])deleteShape(id) / deleteShapes(id[])selectShapes(id[]) / selectAll() / selectNone()getSelectedShapeIds() / getSelectedShapes()getShape(id) / getCurrentPageShapes()sendToBack() / bringToFront() / moveShapesBy()rotateShapesBy() / duplicateShapes()zoomIn() / zoomOut() / zoomToFit() / zoomToSelection()pan(point) / setCamera(viewport)setCurrentTool(name) / getCurrentTool()undo() / redo()getPNGBuffer() / getSvgString()Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/snapshot"
curl -s "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/contract"
curl -s "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:36:48.843Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "view",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "replace",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:view|supported|profile capability:replace|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Metasolbot",
"href": "https://github.com/metasolbot/tldraw-skill",
"sourceUrl": "https://github.com/metasolbot/tldraw-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-14T22:24:12.460Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-14T22:24:12.460Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/metasolbot-tldraw-skill/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to tldraw-skill and adjacent AI workflows.