Crawler Summary

tldraw-skill answer-first brief

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

Claim this agent
Agent DossierGitHubSafety: 94/100

tldraw-skill

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

OpenClawself-declared

Public facts

4

Change events

1

Artifacts

0

Freshness

Apr 14, 2026

Verifiededitorial-contentNo verified compatibility signals

Capability contract not published. No trust telemetry is available yet. Last updated 4/14/2026.

Trust evidence available

Trust score

Unknown

Compatibility

OpenClaw

Freshness

Apr 14, 2026

Vendor

Metasolbot

Artifacts

0

Benchmarks

0

Last release

Unpublished

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

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.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    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.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Metasolbot

profilemedium
Observed Apr 14, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed Apr 14, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB OPENCLEW

Extracted files

0

Examples

6

Snippets

0

Languages

typescript

Parameters

Executable Examples

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()

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB OPENCLEW

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

Full README

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 tools in React.

Website: https://tldraw.com
Docs: https://tldraw.dev
GitHub: https://github.com/tldraw/tldraw
NPM: npm install tldraw @tldraw/sync

Quick Start

Basic Canvas

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.

Local Persistence

<Tldraw persistenceKey="my-app" />

Saves to browser localStorage. Also syncs between tabs with same key.

Programmatic Control

Access the Editor

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} />
}

Create Shapes

// 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 Operations

// 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' }
)

Query Shapes

// 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()

Modify Shapes

// 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])

Selection

// Select shapes
editor.selectShapes([shapeId1, shapeId2])

// Select all
editor.selectAll()

// Deselect
editor.selectNone()

// Get selected
editor.getSelectedShapeIds()

// Zoom to selection
editor.zoomToSelection()

Camera Control

// 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 }
})

Real-Time Collaboration

Using @tldraw/sync

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:

  • Live cursors with names
  • Viewport following
  • Cursor chat
  • Presence awareness

Open in multiple windows/devices to test.

Export Canvas

SVG Export

const svgString = await editor.getSvgString(shapeIds)
console.log(svgString)

PNG Export

const blob = await editor.getPNGBuffer(shapeIds)
// blob is a Blob of PNG image data

JSON Export (Document Format)

// Get all records (shapes, pages, etc.)
const records = editor.store.allRecords()

// Serialize
const json = JSON.stringify(records)

// Save/send/etc.

Snapshot

// Get current state for debugging/analysis
const json = editor.store.serialize('json')

Events & Reactivity

Listen to Changes

// Track reactive values
import { track } from 'tldraw'

const SelectedCount = track(() => {
  const editor = useEditor()
  return <div>{editor.getSelectedShapeIds().length}</div>
})

Subscribe to Events

const unsub = editor.on('change', () => {
  console.log('Document changed')
  const shapes = editor.getCurrentPageShapes()
})

// Cleanup
unsub()

Store Changes

// React to specific shape updates
editor.on('record', (update) => {
  console.log('Record changed:', update)
})

Tools & Shapes

Available Tools

  • select — Selection tool
  • draw — Freehand drawing
  • eraser — Erase shapes
  • text — Add text
  • rectangle — Rectangle shape
  • diamond — Diamond shape
  • ellipse — Ellipse shape
  • arrow — Arrow connector
  • line — Line shape

Change Current Tool

editor.setCurrentTool('draw')
editor.setCurrentTool('text')

Shape Types

  • text — Text box
  • geo — Rectangle, diamond, ellipse, cloud, etc.
  • arrow — Connectors
  • line — Lines
  • frame — Artboard/container
  • image — Images
  • video — Video embeds
  • bookmark — Web links (appears as card)

Configuration

Readonly Mode

<Tldraw readOnly />

Disables all editing. Users can view and interact with canvas but can't modify.

Dark Mode

<Tldraw persistenceKey="app" darkMode />

Custom UI

import {
  TldrawEditor,
  UI,
  DefaultToolbar,
  DefaultUiAssetResolver,
} from 'tldraw'

<TldrawEditor {...args}>
  <UI />
  <DefaultToolbar />
</TldrawEditor>

Can replace UI components with custom versions.

Disable Features

editor.updateInstanceState({
  isGridMode: false,  // Hide grid
  showBindings: false, // Hide connection dots
})

Common Patterns

Programmatically Build Diagram

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/Load Canvas

// 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')
}

API Reference

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()

Resources

  • Examples: https://tldraw.dev/examples
  • Starter Kits: https://tldraw.dev/starter-kits
  • API Reference: https://tldraw.dev/reference
  • Discord: https://discord.tldraw.com

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
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"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

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

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
GITHUB_REPOSactivepieces

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

OPENCLAW
GITHUB_REPOScherry-studio

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

MCPOPENCLAW
GITHUB_REPOSAionUi

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

MCPOPENCLAW
GITHUB_REPOSCopilotKit

Rank

70

The Frontend for Agents & Generative UI. React + Angular

Traction

No public download signal

Freshness

Updated 23d ago

OPENCLAW
Machine Appendix

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.