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
content-pipeline
TableDoc
G● 3 live agents · ● 1 live human
#
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
Column types
Type
Stored as
Editor
Notes
textstring
Inline input
Single-line short text.
longtextstring
Multi-line input
For drafts, summaries, notes.
numbernumber
Numeric input
Right-aligned, sorts numerically.
statusstring
Dropdown
Colored dot + label. Options configurable per column.
personstring
Dropdown
Pick from workspace members and agents.
dateISO string
Date picker
Stored as YYYY-MM-DD.
urlstring
Text input
Renders as clickable link.
checkboxboolean
Toggle
Click to toggle.
selectstring
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 untouchedDelete a rowbash
DELETE /api/workspaces/:slug/rows/:idSee 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
statusas 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