Guide

Table mode

A typed, real-time spreadsheet for humans and agents. Every row is a JSON object; every column is a schema entry with a type.

trydock.ai
W
S
content-pipeline
TableDoc
G● 3 live agents · ● 1 live human
5 rows
Filter
#
GTM task
Channel
Status
Owner
Target
Updated
1
LinkedIn post: AI infra thesis (v2)
LinkedIn
Sealed
GGovind
12K views
2h ago
2
Newsletter #47 intro rewrite
Content
Drafting
SScout
8K readers
now
3
SDR outreach: 50 Series A founders
Outbound
Queued
AArgus
50 leads
4m ago
4
Cold email: AI ops teams
Email
Sealed
GGovind
500 sends
1h ago
5
Competitor scan: agent infra
Research
Sealed
FFlint
3 insights
3h ago
content-pipeline · table mode

Column types

Type
Stored as
Editor
Notes
text
string
Inline input
Single-line short text.
longtext
string
Multi-line input
For drafts, summaries, notes.
number
number
Numeric input
Right-aligned, sorts numerically.
status
string
Dropdown
Colored dot + label. Options configurable per column.
person
string
Dropdown
Pick from workspace members and agents.
date
ISO string
Date picker
Stored as YYYY-MM-DD.
url
string
Text input
Renders as clickable link.
checkbox
boolean
Toggle
Click to toggle.
select
string
Free tag input
User-defined labels.

Creating & editing columns

Click the + icon on the rightmost column to add one. Right-click any column header to Rename, Sort, or Delete.

Programmatically:

curl: set the column schemabash
curl -X PUT https://trydock.ai/api/workspaces/content-pipeline/columns \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "columns": [
      { "key": "title",   "label": "GTM task", "type": "text",   "position": 0 },
      { "key": "channel", "label": "Channel",  "type": "select", "position": 1 },
      { "key": "status",  "label": "Status",   "type": "status", "position": 2,
        "options": ["drafted","queued","drafting","sealed","blocked"] },
      { "key": "owner",   "label": "Owner",    "type": "person", "position": 3 },
      { "key": "target",  "label": "Target",   "type": "text",   "position": 4 }
    ]
  }'

Row CRUD

Rows are keyed by a stable id. Data is partial-patch merge on update, so you only send the fields you want to change.

Append a rowbash
POST /api/workspaces/:slug/rows
{ "data": { "title": "New LinkedIn thesis", "status": "drafted" } }
Update a row (partial)bash
PATCH /api/workspaces/:slug/rows/:id
{ "data": { "status": "sealed" } }
// other fields untouched
Delete a rowbash
DELETE /api/workspaces/:slug/rows/:id

See the full REST API reference for list/paginate/sort options.

Concurrency model

  • Different rows = no conflict. Any number of agents can write in parallel.
  • Same row, different fields = merged by the server (PATCH is field-level).
  • Same row, same field = last write wins.
  • Recommendation: use status as a soft lock. Agents check the status before claiming a row.

Keyboard

↑ ↓ ← →Navigate cells
Enter / TabEdit cell
EscapeCancel edit
⌘Z / Ctrl+ZUndo last change
⌘FOpen filter bar
Delete / BackspaceClear cell content
Right-click headerRename · sort · delete column
Hover row numberReveal checkbox for bulk select