@abraca/mcp 1.0.25 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abraca/mcp",
3
- "version": "1.0.25",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server for Abracadabra — AI agent collaboration on CRDT documents",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -98,15 +98,69 @@ export interface PageMeta extends Record<string, unknown> {
98
98
  spModelUploadId?: string
99
99
  spModelDocId?: string
100
100
 
101
+ // Slides
102
+ slidesTransition?: string
103
+ slidesTheme?: string
104
+
105
+ // Media metadata (extracted on import)
106
+ mediaDuration?: number
107
+ mediaWidth?: number
108
+ mediaHeight?: number
109
+ mediaCamera?: string
110
+ mediaLens?: string
111
+ mediaIso?: number
112
+ mediaFocalLength?: number
113
+ mediaAperture?: number
114
+ mediaShutterSpeed?: string
115
+ mediaArtist?: string
116
+ mediaAlbum?: string
117
+ mediaGenre?: string
118
+ mediaYear?: number
119
+ dateTaken?: string
120
+
121
+ // Sheets cell formatting
122
+ bold?: boolean
123
+ italic?: boolean
124
+ textColor?: string
125
+ bgColor?: string
126
+ align?: string
127
+ formula?: string
128
+
101
129
  // Renderer config (set on the page doc itself, not children)
102
130
  kanbanColumnWidth?: string
103
131
  galleryColumns?: number
104
132
  galleryAspect?: string
133
+ galleryCardStyle?: string
134
+ galleryShowLabels?: boolean
135
+ gallerySortBy?: string
105
136
  calendarView?: string
106
137
  calendarWeekStart?: string
107
138
  calendarShowWeekNumbers?: boolean
108
139
  tableMode?: string
140
+ tableSortDir?: string
141
+ tableColumns?: any[]
142
+ tableColumnWidths?: Record<string, number>
143
+ tableColumnOrder?: string[]
109
144
  timelineZoom?: string
145
+ checklistFilter?: string
146
+ checklistSort?: string
147
+ mapShowLabels?: boolean
148
+ spatialGridVisible?: boolean
149
+ chartType?: string
150
+ chartMetric?: string
151
+ chartColorScheme?: string
152
+ chartLimit?: number
153
+ chartShowLegend?: boolean
154
+ chartShowValues?: boolean
155
+ mediaRepeat?: string
156
+ mediaShuffle?: boolean
157
+ sheetsDefaultColWidth?: number
158
+ sheetsDefaultRowHeight?: number
159
+ sheetsShowGridlines?: boolean
160
+ sheetsColumnWidths?: Record<string, number>
161
+ sheetsRowHeights?: Record<string, number>
162
+ sheetsFreezeRows?: number
163
+ sheetsFreezeCols?: number
110
164
 
111
165
  // Internal
112
166
  _metaFields?: UserMetaField[]
package/src/tools/meta.ts CHANGED
@@ -47,7 +47,7 @@ export function registerMetaTools(mcp: McpServer, server: AbracadabraMCPServer)
47
47
  'Update metadata fields on a document. Merges the provided fields into existing metadata.',
48
48
  {
49
49
  docId: z.string().describe('Document ID.'),
50
- meta: z.record(z.unknown()).describe('Metadata fields to update (merged with existing). Universal keys: color (hex), icon (Lucide kebab-case — NEVER emoji), dateStart/dateEnd, datetimeStart/datetimeEnd, allDay, tags (string[]), checked (bool), priority (0=none,1=low,2=med,3=high,4=urgent), status, rating (0-5), url, email, phone, number, unit, subtitle, note, taskProgress (0-100), members ({id,label}[]), coverUploadId. Geo/Map: geoType ("marker"|"line"|"measure"), geoLat, geoLng, geoDescription. Spatial 3D: spShape ("box"|"sphere"|"cylinder"|"cone"|"plane"|"torus"|"glb"), spX/spY/spZ, spRX/spRY/spRZ, spSX/spSY/spSZ, spColor, spOpacity (0-100). Dashboard: deskX, deskY, deskZ, deskMode ("icon"|"widget-sm"|"widget-lg"). Renderer config (on the page doc itself): kanbanColumnWidth, galleryColumns, galleryAspect, calendarView, calendarWeekStart, tableMode, showRefEdges. Set a key to null to clear it.'),
50
+ meta: z.record(z.unknown()).describe('Metadata fields to update (merged with existing). Universal keys: color (hex), icon (Lucide kebab-case — NEVER emoji), dateStart/dateEnd, datetimeStart/datetimeEnd, allDay, tags (string[]), checked (bool), priority (0=none,1=low,2=med,3=high,4=urgent), status, rating (0-5), url, email, phone, number, unit, subtitle, note, taskProgress (0-100), members ({id,label}[]), coverUploadId. Geo/Map: geoType ("marker"|"line"|"measure"), geoLat, geoLng, geoDescription. Spatial 3D: spShape ("box"|"sphere"|"cylinder"|"cone"|"plane"|"torus"|"glb"), spX/spY/spZ, spRX/spRY/spRZ, spSX/spSY/spSZ, spColor, spOpacity (0-100). Dashboard: deskX, deskY, deskZ, deskMode ("icon"|"widget-sm"|"widget-lg"). Slides: slidesTransition ("none"|"fade"|"slide"), slidesTheme ("dark"|"light"). Chart: chartType ("bar"|"stacked bar"|"line"|"donut"|"treemap"), chartMetric, chartColorScheme, chartLimit, chartShowLegend, chartShowValues. Sheets: sheetsDefaultColWidth, sheetsDefaultRowHeight, sheetsShowGridlines, sheetsFreezeRows, sheetsFreezeCols. Cell formatting: bold, italic, textColor, bgColor, align, formula. Renderer config (on the page doc itself): kanbanColumnWidth, galleryColumns, galleryAspect, galleryCardStyle, galleryShowLabels, gallerySortBy, calendarView, calendarWeekStart, calendarShowWeekNumbers, tableMode, tableSortDir, checklistFilter, checklistSort, mapShowLabels, spatialGridVisible, showRefEdges, mediaRepeat, mediaShuffle. Set a key to null to clear it.'),
51
51
  },
52
52
  async ({ docId, meta }) => {
53
53
  server.setAutoStatus('writing', docId)
package/src/tools/tree.ts CHANGED
@@ -200,7 +200,7 @@ export function registerTreeTools(mcp: McpServer, server: AbracadabraMCPServer)
200
200
  {
201
201
  parentId: z.string().optional().describe('Parent document ID. Omit for top-level pages. Use a document ID for nested/child pages.'),
202
202
  label: z.string().describe('Display name / title for the document.'),
203
- type: z.string().optional().describe('Page type — sets how this document renders. "doc" (rich text), "kanban" (columns → cards), "table" (columns → cells, positional rows), "calendar" (events with datetimeStart/End), "timeline" (epics → tasks with dateStart/End + taskProgress), "checklist" (tasks with checked/priority, unlimited nesting), "outline" (nested items, unlimited depth), "gallery" (image/media items), "map" (markers/lines with geoLat/geoLng), "graph" (knowledge graph nodes), "dashboard" (positioned widgets with deskX/deskY/deskMode), "mindmap" (connected nodes), "spatial" (3D objects with spShape/spX/spY/spZ), "media" (audio/video tracks), "slides" (slide deck), "whiteboard" (freeform canvas). Omit to inherit parent view. Only set on the parent page, NEVER on child items.'),
203
+ type: z.string().optional().describe('Page type — sets how this document renders. "doc" (rich text), "kanban" (columns → cards), "table" (columns → rows with custom fields), "calendar" (events with datetimeStart/End), "timeline" (epics → tasks with dateStart/End + taskProgress), "checklist" (tasks with checked/priority, unlimited nesting), "outline" (nested items, unlimited depth), "gallery" (visual grid with covers/ratings), "map" (markers/lines with geoLat/geoLng), "graph" (force-directed knowledge graph), "dashboard" (positioned widgets with deskX/deskY/deskMode), "spatial" (3D scene with spShape/spX/spY/spZ), "media" (audio/video player with playlists), "slides" (presentation with transitions), "chart" (bar/line/donut/treemap from data points or aggregation), "sheets" (spreadsheet with formulas and formatting), "overview" (space home — activity and stats), "call" (video call room, no children). Omit to inherit parent view. Only set on the parent page, NEVER on child items.'),
204
204
  meta: z.record(z.unknown()).optional().describe('Initial metadata (PageMeta fields: color as hex string, icon as Lucide kebab-case name like "star"/"code-2"/"users" — never emoji, dateStart, dateEnd, priority 0-4, tags array, etc). Omit icon entirely to use page type default.'),
205
205
  },
206
206
  async ({ parentId, label, type, meta }) => {
@@ -350,7 +350,7 @@ export function registerTreeTools(mcp: McpServer, server: AbracadabraMCPServer)
350
350
  'Change the page type view of a document (data is preserved).',
351
351
  {
352
352
  id: z.string().describe('Document ID.'),
353
- type: z.string().describe('New page type (e.g. "doc", "kanban", "table", "calendar", "outline", "gallery", "slides", "timeline", "whiteboard", "map", "dashboard", "mindmap", "graph").'),
353
+ type: z.string().describe('New page type: "doc", "kanban", "table", "calendar", "timeline", "checklist", "outline", "gallery", "map", "graph", "dashboard", "spatial", "media", "slides", "chart", "sheets", "overview", "call".'),
354
354
  },
355
355
  async ({ id, type }) => {
356
356
  server.setAutoStatus('writing')