@pinepaper.studio/mcp-server 1.5.5 → 1.6.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.
Files changed (76) hide show
  1. package/README.de.md +71 -0
  2. package/README.es.md +71 -0
  3. package/README.fr.md +71 -0
  4. package/README.hi.md +71 -0
  5. package/README.ja.md +71 -0
  6. package/README.ko.md +71 -0
  7. package/README.md +513 -272
  8. package/README.pt-BR.md +71 -0
  9. package/README.zh-CN.md +71 -0
  10. package/assets/easing-splashes.svg +152 -0
  11. package/assets/equation-path.svg +77 -0
  12. package/assets/hero.svg +126 -0
  13. package/assets/live-badge.svg +62 -0
  14. package/assets/poster-sunburst.svg +106 -0
  15. package/dist/__tests__/fixtures/mock-relations.d.ts +48 -0
  16. package/dist/__tests__/fixtures/mock-relations.d.ts.map +1 -1
  17. package/dist/__tests__/fixtures/mock-relations.js +31 -0
  18. package/dist/__tests__/fixtures/mock-relations.js.map +1 -1
  19. package/dist/agent/types.d.ts +6 -6
  20. package/dist/browser/puppeteer-controller.d.ts +34 -0
  21. package/dist/browser/puppeteer-controller.d.ts.map +1 -1
  22. package/dist/browser/puppeteer-controller.js +116 -5
  23. package/dist/browser/puppeteer-controller.js.map +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +32 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/ontology/index.d.ts +2 -0
  28. package/dist/ontology/index.d.ts.map +1 -1
  29. package/dist/ontology/index.js +2 -0
  30. package/dist/ontology/index.js.map +1 -1
  31. package/dist/ontology/ontology-compiler.d.ts +78 -0
  32. package/dist/ontology/ontology-compiler.d.ts.map +1 -0
  33. package/dist/ontology/ontology-compiler.js +235 -0
  34. package/dist/ontology/ontology-compiler.js.map +1 -0
  35. package/dist/ontology/ontology-validator.d.ts +103 -0
  36. package/dist/ontology/ontology-validator.d.ts.map +1 -0
  37. package/dist/ontology/ontology-validator.js +573 -0
  38. package/dist/ontology/ontology-validator.js.map +1 -0
  39. package/dist/ontology/types.d.ts +1 -0
  40. package/dist/ontology/types.d.ts.map +1 -1
  41. package/dist/ontology/validator.d.ts +6 -0
  42. package/dist/ontology/validator.d.ts.map +1 -1
  43. package/dist/ontology/validator.js +34 -5
  44. package/dist/ontology/validator.js.map +1 -1
  45. package/dist/ontology/vocabulary.d.ts.map +1 -1
  46. package/dist/ontology/vocabulary.js +91 -3
  47. package/dist/ontology/vocabulary.js.map +1 -1
  48. package/dist/tools/definitions.d.ts +1 -1
  49. package/dist/tools/definitions.d.ts.map +1 -1
  50. package/dist/tools/definitions.js +978 -27
  51. package/dist/tools/definitions.js.map +1 -1
  52. package/dist/tools/handlers/maps.d.ts.map +1 -1
  53. package/dist/tools/handlers/maps.js +54 -1
  54. package/dist/tools/handlers/maps.js.map +1 -1
  55. package/dist/tools/handlers/ontology.d.ts.map +1 -1
  56. package/dist/tools/handlers/ontology.js +15 -3
  57. package/dist/tools/handlers/ontology.js.map +1 -1
  58. package/dist/tools/handlers.d.ts.map +1 -1
  59. package/dist/tools/handlers.js +137 -6
  60. package/dist/tools/handlers.js.map +1 -1
  61. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  62. package/dist/tools/minimal-descriptions.js +20 -1
  63. package/dist/tools/minimal-descriptions.js.map +1 -1
  64. package/dist/tools/toolkits.d.ts.map +1 -1
  65. package/dist/tools/toolkits.js +25 -2
  66. package/dist/tools/toolkits.js.map +1 -1
  67. package/dist/types/code-generator.d.ts +190 -2
  68. package/dist/types/code-generator.d.ts.map +1 -1
  69. package/dist/types/code-generator.js +1068 -30
  70. package/dist/types/code-generator.js.map +1 -1
  71. package/dist/types/schemas.d.ts +2726 -116
  72. package/dist/types/schemas.d.ts.map +1 -1
  73. package/dist/types/schemas.js +594 -4
  74. package/dist/types/schemas.js.map +1 -1
  75. package/manifest.json +299 -71
  76. package/package.json +14 -3
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": "0.3",
3
3
  "name": "pinepaper-mcp",
4
- "version": "1.5.1",
4
+ "version": "1.6.0",
5
5
  "display_name": "PinePaper Studio",
6
6
  "description": "Create animated graphics with AI using PinePaper Studio",
7
7
  "long_description": "PinePaper MCP Server enables Claude to create, animate, and export graphics through PinePaper Studio. Features include shape creation, relation-based animations (orbits, follows, attached_to), procedural generators, visual effects, SVG export with animations, asset search & import from 4 open repositories (500k+ icons), performance metrics tracking, diagram tools for flowcharts/UML/network diagrams with smart connectors and auto-layout, enhanced error messages with canvas context, Agent Flow Mode for content automation pipelines with batch operations and smart platform exports (Instagram, TikTok, YouTube, etc.), interactive triggers (click, hover, drag events), quiz/LMS integration with SCORM/xAPI support, Letter Collage for stylized text with per-letter customization (Wordle, magazine cutout, gradient styles with 24+ palettes), and canvas presets for social media platforms. Supports two execution modes: Puppeteer (live browser execution) and Code (generate code for manual paste).",
@@ -79,6 +79,26 @@
79
79
  }
80
80
  },
81
81
  "tools": [
82
+ {
83
+ "name": "pinepaper_set_background_color",
84
+ "description": "Set the canvas background color"
85
+ },
86
+ {
87
+ "name": "pinepaper_set_canvas_size",
88
+ "description": "Set canvas dimensions"
89
+ },
90
+ {
91
+ "name": "pinepaper_get_canvas_size",
92
+ "description": "Get current canvas dimensions"
93
+ },
94
+ {
95
+ "name": "pinepaper_clear_canvas",
96
+ "description": "Remove all items from the canvas"
97
+ },
98
+ {
99
+ "name": "pinepaper_refresh_page",
100
+ "description": "Refresh the PinePaper page"
101
+ },
82
102
  {
83
103
  "name": "pinepaper_create_item",
84
104
  "description": "Create text, shapes, or graphics on the PinePaper canvas"
@@ -99,6 +119,26 @@
99
119
  "name": "pinepaper_create_diagonal_stripes",
100
120
  "description": "Create a diagonal stripe pattern"
101
121
  },
122
+ {
123
+ "name": "pinepaper_import_svg",
124
+ "description": "Import SVG content onto the canvas"
125
+ },
126
+ {
127
+ "name": "pinepaper_import_mermaid",
128
+ "description": "Import a Mermaid diagram (flowchart|graph|stateDiagram|sequenceDiagram|erDiagram|classDiagram). mermaidText, autoLayout, clearExisting."
129
+ },
130
+ {
131
+ "name": "pinepaper_import_image",
132
+ "description": "Import a raster image (PNG/JPG/WebP) onto the canvas."
133
+ },
134
+ {
135
+ "name": "pinepaper_search_assets",
136
+ "description": "Search for SVG assets from open repositories (SVGRepo, OpenClipart, Iconify, FontAwesome)"
137
+ },
138
+ {
139
+ "name": "pinepaper_import_asset",
140
+ "description": "Import and place an asset from search results onto the canvas"
141
+ },
102
142
  {
103
143
  "name": "pinepaper_batch_create",
104
144
  "description": "Create multiple items at once with single history save"
@@ -111,6 +151,74 @@
111
151
  "name": "pinepaper_create_grid",
112
152
  "description": "Create a grid of lines on the canvas"
113
153
  },
154
+ {
155
+ "name": "pinepaper_geometry",
156
+ "description": "Exact geometry construction (polygon vertices, intersections, circumcircle, tangents); optionally creates an item from the result. {operation, args, createAs?}"
157
+ },
158
+ {
159
+ "name": "pinepaper_equation_path",
160
+ "description": "Create a path item from a math equation (deterministic, Expression IR). kind: function|parametric|fourier|preset (spiral/rose/lissajous/astroid/heart/spirograph). {kind, expr|xExpr/yExpr|harmonics|preset, min, max, samples, scale, x, y, style}"
161
+ },
162
+ {
163
+ "name": "pinepaper_event",
164
+ "description": "Event channel for scene chains (S11). action:'create' {name}→eventId, or 'pulse' {eventId}. Wire beats with on_event_fire_after/add_relation/set_color relations (event as sourceId)."
165
+ },
166
+ {
167
+ "name": "pinepaper_construction_sequence",
168
+ "description": "Reveal a figure step by step on the timeline (build/play/clear/list). {action, steps?, stepDuration?}"
169
+ },
170
+ {
171
+ "name": "pinepaper_group",
172
+ "description": "Group a composite object's parts into ONE entity, ungroup, or break_apart an imported SVG into movable parts. {action: group|ungroup|break_apart, itemIds?, itemId?, groupName?, groupId?}"
173
+ },
174
+ {
175
+ "name": "pinepaper_camera_director",
176
+ "description": "Cinematic camera walkthrough from a shot list (auto: one shot per item, or explicit shots). Compiles to one camera_animates track. {action: auto|shots, shots?, order?, establishing?, loop?}"
177
+ },
178
+ {
179
+ "name": "pinepaper_detect_objects",
180
+ "description": "On-device image detection: DETR 80-class, or queries:[…] open-vocabulary (OWL-ViT). asNodes:true → image-anchored design nodes. {itemId?, threshold?, asNodes?, queries?}"
181
+ },
182
+ {
183
+ "name": "pinepaper_extract_object",
184
+ "description": "Detect + crop the best-matching object out of an imported image into a new item. {label?, itemId?, x?, y?, threshold?}"
185
+ },
186
+ {
187
+ "name": "pinepaper_arrange",
188
+ "description": "Change an item's z-order (stacking). {itemId, action: front|back|forward|backward}"
189
+ },
190
+ {
191
+ "name": "pinepaper_validate_scene",
192
+ "description": "Audit the live canvas (dangling refs, unknown types/props, keyframes, cycles) → structured diagnostics. Optional ops[] to pre-validate proposed mutations."
193
+ },
194
+ {
195
+ "name": "pinepaper_capture_frames",
196
+ "description": "Deterministic frame capture at given times (seeded random). Returns per-frame hashes (or data URLs) to verify reproducibility/motion. {times, seed?, includeDataUrls?}"
197
+ },
198
+ {
199
+ "name": "pinepaper_media",
200
+ "description": "Video/audio on the canvas from a URL. action: upload_video|upload_audio|list|remove|set_playback_rate. Uploads are first-class items. {action, url?, id?, rate?, ...}"
201
+ },
202
+ {
203
+ "name": "pinepaper_crop_image",
204
+ "description": "One-shot crop of an image item to a canvas-coords rect (clamped; keeps the registry id). {itemId, rect: {x,y,width,height}, aspectRatio?}"
205
+ },
206
+ {
207
+ "name": "pinepaper_chroma_key",
208
+ "description": "One-shot green-screen background removal on an image item (keeps the registry id). Omit threshold/smoothing to auto-estimate. {itemId, color?, threshold?, smoothing?}"
209
+ },
210
+ {
211
+ "name": "pinepaper_rigging",
212
+ "description": "Skeletal rigging + animation. action: create_skeleton|add_bone|attach_item|create_ik_chain|add_pose_keyframe|set_target_path|save_pose|save_shape_key. Pose keyframes carry S12 breakdown controls (favor/breakdown/boneOffsets/movingHold)."
213
+ },
214
+ {
215
+ "name": "pinepaper_instantiate_ontology",
216
+ "description": "Compile a pp: JSON-LD design graph (typed nodes + structural edges like on_top_of) into a live scene — roots placed, the rest positioned by relations. {doc, canvas?, defaultGeometry?} → {itemIds, diagnostics}."
217
+ },
218
+ {
219
+ "name": "pinepaper_lint_scene",
220
+ "description": "Read-only relational-density audit of the live scene → {density, suggestions}. Flags coordinate-driven scenes and proposes structural relations for unrelated items already in position. {eps?, cap?}"
221
+ },
114
222
  {
115
223
  "name": "pinepaper_add_relation",
116
224
  "description": "Add animation relations between items (orbits, follows, attached_to)"
@@ -123,6 +231,14 @@
123
231
  "name": "pinepaper_query_relations",
124
232
  "description": "Query existing relations for an item"
125
233
  },
234
+ {
235
+ "name": "pinepaper_register_custom_relation",
236
+ "description": "Register a custom relation type with JavaScript update function."
237
+ },
238
+ {
239
+ "name": "pinepaper_execute_custom_code",
240
+ "description": "Execute arbitrary JavaScript in the PinePaper browser context."
241
+ },
126
242
  {
127
243
  "name": "pinepaper_animate",
128
244
  "description": "Apply simple loop animations to items"
@@ -136,96 +252,112 @@
136
252
  "description": "Control animation playback"
137
253
  },
138
254
  {
139
- "name": "pinepaper_execute_generator",
140
- "description": "Run procedural background generators"
255
+ "name": "pinepaper_apply_animated_mask",
256
+ "description": "Apply mask. itemId, preset: wipeLeft|wipeRight|iris|irisOut|star|heart|curtainH|curtainV|cinematic|diagonalWipe|revealUp|revealDown."
141
257
  },
142
258
  {
143
- "name": "pinepaper_list_generators",
144
- "description": "List available background generators"
259
+ "name": "pinepaper_apply_custom_mask",
260
+ "description": "Apply a custom mask shape to an item."
145
261
  },
146
262
  {
147
- "name": "pinepaper_apply_effect",
148
- "description": "Apply visual effects to items"
263
+ "name": "pinepaper_remove_mask",
264
+ "description": "Remove mask from an item."
149
265
  },
150
266
  {
151
- "name": "pinepaper_get_items",
152
- "description": "Get all items on the canvas"
267
+ "name": "pinepaper_get_animatable_properties",
268
+ "description": "List animatable properties for an item type."
153
269
  },
154
270
  {
155
- "name": "pinepaper_get_relation_stats",
156
- "description": "Get statistics about relations"
271
+ "name": "pinepaper_get_available_easings",
272
+ "description": "List available easing functions."
157
273
  },
158
274
  {
159
- "name": "pinepaper_get_performance_metrics",
160
- "description": "Get execution timing metrics and performance statistics"
275
+ "name": "pinepaper_get_mask_types",
276
+ "description": "List available mask types."
161
277
  },
162
278
  {
163
- "name": "pinepaper_set_background_color",
164
- "description": "Set the canvas background color"
279
+ "name": "pinepaper_get_mask_animations",
280
+ "description": "List available mask animation presets."
165
281
  },
166
282
  {
167
- "name": "pinepaper_set_canvas_size",
168
- "description": "Set canvas dimensions"
283
+ "name": "pinepaper_camera_animate",
284
+ "description": "Camera keyframes. Per-kf: zoom, focus ([x,y]|id|{item,offset}), pitch, yaw, easing; curved via pathOut/pathIn or pathMode:arc+pivot / custom+path."
169
285
  },
170
286
  {
171
- "name": "pinepaper_get_canvas_size",
172
- "description": "Get current canvas dimensions"
287
+ "name": "pinepaper_camera",
288
+ "description": "Camera control. action: zoom|pan|move_to|reset|stop|state|fit_view. zoom: direction in|out, level. pan: direction or {x,y}, amount. move_to: {x,y,zoom}. duration default 0.5s."
173
289
  },
174
290
  {
175
- "name": "pinepaper_clear_canvas",
176
- "description": "Remove all items from the canvas"
291
+ "name": "pinepaper_create_scene",
292
+ "description": "Create a complete scene with multiple items, relations, and animations in a single operation"
177
293
  },
178
294
  {
179
- "name": "pinepaper_refresh_page",
180
- "description": "Refresh the PinePaper page"
295
+ "name": "pinepaper_manage_scenes",
296
+ "description": "Scene CRUD. action: save|load|list|delete|rename|duplicate|reorder|info|export|import. name, sceneId, transition: none|fade|zoom-in|zoom-out."
181
297
  },
182
298
  {
183
- "name": "pinepaper_import_svg",
184
- "description": "Import SVG content onto the canvas"
299
+ "name": "pinepaper_scene_playback",
300
+ "description": "Scene chain playback. action: create_chain|play|pause|resume|stop|toggle_loop|jump. sceneIds, defaultDuration (secs), loop."
185
301
  },
186
302
  {
187
- "name": "pinepaper_search_assets",
188
- "description": "Search for SVG assets from open repositories (SVGRepo, OpenClipart, Iconify, FontAwesome)"
303
+ "name": "pinepaper_selection",
304
+ "description": "Manage selection. action: select|select_all|deselect_all|get|delete_selected. itemIds, mode: replace|add|remove."
189
305
  },
190
306
  {
191
- "name": "pinepaper_import_asset",
192
- "description": "Import and place an asset from search results onto the canvas"
307
+ "name": "pinepaper_transform",
308
+ "description": "Transform items. action: nudge|flip|reorder. dx,dy. direction: horizontal|vertical. order: bringToFront|sendToBack|moveUp|moveDown."
193
309
  },
194
310
  {
195
- "name": "pinepaper_add_filter",
196
- "description": "Add a visual filter effect to the canvas"
311
+ "name": "pinepaper_history",
312
+ "description": "Undo/redo. action: undo|redo|get_state."
197
313
  },
198
314
  {
199
- "name": "pinepaper_export_svg",
200
- "description": "Export canvas as animated SVG"
315
+ "name": "pinepaper_image_filter",
316
+ "description": "GPU image filters. action: apply|chain. itemId, filterName, params, filters[]."
201
317
  },
202
318
  {
203
- "name": "pinepaper_export_training_data",
204
- "description": "Export instruction/code pairs for LLM training"
319
+ "name": "pinepaper_lasso",
320
+ "description": "Lasso selection. action: activate|apply. itemId."
205
321
  },
206
322
  {
207
- "name": "pinepaper_browser_connect",
208
- "description": "Connect to PinePaper Studio in browser"
323
+ "name": "pinepaper_cutout_style",
324
+ "description": "Style cutouts. action: apply|list. itemId, preset, options."
209
325
  },
210
326
  {
211
- "name": "pinepaper_browser_disconnect",
212
- "description": "Disconnect from browser"
327
+ "name": "pinepaper_precomp",
328
+ "description": "Nested compositions. action: create|add|remove. itemIds, name, precompId, itemId."
213
329
  },
214
330
  {
215
- "name": "pinepaper_browser_screenshot",
216
- "description": "Take a screenshot of the canvas"
331
+ "name": "pinepaper_background",
332
+ "description": "Background. action: set|clear|get. mode: color|pattern|generator."
217
333
  },
218
334
  {
219
- "name": "pinepaper_browser_status",
220
- "description": "Check browser connection status"
335
+ "name": "pinepaper_query",
336
+ "description": "Canvas queries. action: get_by_id|hit_test|is_empty. itemId, x, y, tolerance."
221
337
  },
222
338
  {
223
- "name": "pinepaper_p5_draw",
224
- "description": "Execute p5.js-style drawing code on the canvas (subset of p5.js API)"
339
+ "name": "pinepaper_deform",
340
+ "description": "Vertex deformation. action: apply|trigger|remove. itemId, preset: fold|squeeze|squash|twist|ripple|wave|breathe|wobble..., phase, amplitude."
225
341
  },
226
342
  {
227
- "name": "pinepaper_create_scene",
228
- "description": "Create a complete scene with multiple items, relations, and animations in a single operation"
343
+ "name": "pinepaper_sprite_sheet",
344
+ "description": "Sprite sheets. action: generate|play|export. skeletonId, spriteSheetId, poses, animations, format."
345
+ },
346
+ {
347
+ "name": "pinepaper_interaction",
348
+ "description": "Physics behaviors. action: add_behavior|remove_behavior|trigger_action|get_state. behaviorType: repel|attract|follow|orbit|slingshot."
349
+ },
350
+ {
351
+ "name": "pinepaper_export_widget",
352
+ "description": "Export scene as pp:PinePaper ontology JSON. download, filename, includeInteractions, minify."
353
+ },
354
+ {
355
+ "name": "pinepaper_export_widget_html",
356
+ "description": "Export scene as self-contained HTML with tree-shaken runtime. title, download."
357
+ },
358
+ {
359
+ "name": "pinepaper_apply_template",
360
+ "description": "Apply pre-built template (templateId), or list available (listOnly:true). 13 categories. DESTRUCTIVE: replaces canvas."
229
361
  },
230
362
  {
231
363
  "name": "pinepaper_create_diagram_shape",
@@ -263,6 +395,98 @@
263
395
  "name": "pinepaper_diagram_mode",
264
396
  "description": "Control diagram mode for interactive editing (activate, deactivate, set tool mode)"
265
397
  },
398
+ {
399
+ "name": "pinepaper_map",
400
+ "description": "Map load + viewport. action: load|pan|zoom|export_config|import_custom. mapId: usa|world|worldHighRes|<custom>."
401
+ },
402
+ {
403
+ "name": "pinepaper_map_regions",
404
+ "description": "Map region styling/selection. action: highlight|unhighlight|apply_colors|add_marker|add_labels|get_at_point|select|deselect|get_highlighted."
405
+ },
406
+ {
407
+ "name": "pinepaper_map_animation",
408
+ "description": "Map region animation. action: animate_regions|animate_wave|stop|get_animated. duration, loop."
409
+ },
410
+ {
411
+ "name": "pinepaper_map_data",
412
+ "description": "Map import/export. action: export_csv|import_csv|export_geojson|export_original_geojson|source_info."
413
+ },
414
+ {
415
+ "name": "pinepaper_globe",
416
+ "description": "Globe mode + world tour. action: enable|rotate_to|spin|world_tour|stop_tour|pin_item|tour_item. world_tour needs regions or coords."
417
+ },
418
+ {
419
+ "name": "pinepaper_font",
420
+ "description": "Font Studio. action: show_studio|set_name|create_glyph|create_space|remove_glyph|set_metrics|export|cleanup_path|… (16 actions; see pinepaper_tool_guide)."
421
+ },
422
+ {
423
+ "name": "pinepaper_create_letter_collage",
424
+ "description": "Create stylized text with per-letter customization (Wordle, magazine cutout, gradient styles)"
425
+ },
426
+ {
427
+ "name": "pinepaper_animate_letter_collage",
428
+ "description": "Apply staggered animation to letter collage letters"
429
+ },
430
+ {
431
+ "name": "pinepaper_execute_generator",
432
+ "description": "Run procedural background generators"
433
+ },
434
+ {
435
+ "name": "pinepaper_list_generators",
436
+ "description": "List available background generators"
437
+ },
438
+ {
439
+ "name": "pinepaper_apply_effect",
440
+ "description": "Apply visual effects to items"
441
+ },
442
+ {
443
+ "name": "pinepaper_add_filter",
444
+ "description": "Add a visual filter effect to the canvas"
445
+ },
446
+ {
447
+ "name": "pinepaper_get_items",
448
+ "description": "Get all items on the canvas"
449
+ },
450
+ {
451
+ "name": "pinepaper_get_relation_stats",
452
+ "description": "Get statistics about relations"
453
+ },
454
+ {
455
+ "name": "pinepaper_export_svg",
456
+ "description": "Export canvas as animated SVG"
457
+ },
458
+ {
459
+ "name": "pinepaper_export_training_data",
460
+ "description": "Export instruction/code pairs for LLM training"
461
+ },
462
+ {
463
+ "name": "pinepaper_export_scene",
464
+ "description": "Export scene definition as JSON."
465
+ },
466
+ {
467
+ "name": "pinepaper_browser_connect",
468
+ "description": "Connect to PinePaper Studio in browser"
469
+ },
470
+ {
471
+ "name": "pinepaper_browser_disconnect",
472
+ "description": "Disconnect from browser"
473
+ },
474
+ {
475
+ "name": "pinepaper_browser_screenshot",
476
+ "description": "Take a screenshot of the canvas"
477
+ },
478
+ {
479
+ "name": "pinepaper_browser_status",
480
+ "description": "Check browser connection status"
481
+ },
482
+ {
483
+ "name": "pinepaper_get_performance_metrics",
484
+ "description": "Get execution timing metrics and performance statistics"
485
+ },
486
+ {
487
+ "name": "pinepaper_diagnostic_report",
488
+ "description": "Generate diagnostic report with token budget analysis."
489
+ },
266
490
  {
267
491
  "name": "pinepaper_agent_start_job",
268
492
  "description": "Start an agent job session for batch content creation workflows"
@@ -288,52 +512,56 @@
288
512
  "description": "Analyze canvas content for export recommendations"
289
513
  },
290
514
  {
291
- "name": "pinepaper_add_trigger",
292
- "description": "Add interactive event triggers to items (click, hover, drag)"
515
+ "name": "pinepaper_p5_draw",
516
+ "description": "Execute p5.js-style drawing code on the canvas (subset of p5.js API)"
293
517
  },
294
518
  {
295
- "name": "pinepaper_remove_trigger",
296
- "description": "Remove event triggers from an item"
519
+ "name": "pinepaper_register_item",
520
+ "description": "Register an existing Paper.js item in the PinePaper registry."
297
521
  },
298
522
  {
299
- "name": "pinepaper_query_triggers",
300
- "description": "Query existing triggers on the canvas"
523
+ "name": "pinepaper_get_canvas_ontology",
524
+ "description": "Capture live canvas as compact pp: triples + item summary. Prefer over get_items for composition reasoning. maxItems, maxChildren, includeViewport."
301
525
  },
302
526
  {
303
- "name": "pinepaper_create_quiz",
304
- "description": "Create interactive quizzes with multiple question types"
527
+ "name": "pinepaper_analyze_design",
528
+ "description": "Analyze template definition → typed graph, patterns, math functions, semantics, fingerprint, JSON-LD."
305
529
  },
306
530
  {
307
- "name": "pinepaper_get_quiz_state",
308
- "description": "Get current quiz state (score, progress, answers)"
531
+ "name": "pinepaper_validate_design",
532
+ "description": "Validate + score template definition. 5-dimension quality scoring: completeness, animation, semantics, composition, structure."
309
533
  },
310
534
  {
311
- "name": "pinepaper_reset_quiz",
312
- "description": "Reset quiz to initial state"
535
+ "name": "pinepaper_validate",
536
+ "description": "Semantic validation of the live scene/op → structured diagnostics {code, severity, message, fix}. mode:'scene'|'op'. Catches missing targets (+did-you-mean), bad params, cycles."
313
537
  },
314
538
  {
315
- "name": "pinepaper_create_letter_collage",
316
- "description": "Create stylized text with per-letter customization (Wordle, magazine cutout, gradient styles)"
539
+ "name": "pinepaper_query_ontology",
540
+ "description": "Query design knowledge graph. query: list_types|list_edges|list_generators|list_effects|type_hierarchy|type_properties|animatable_properties|is_subtype|node_type|edge_type."
317
541
  },
318
542
  {
319
- "name": "pinepaper_animate_letter_collage",
320
- "description": "Apply staggered animation to letter collage letters"
543
+ "name": "pinepaper_tool_guide",
544
+ "description": "Get detailed guidance for any tool, category, or the full AI Agent Guide"
321
545
  },
322
546
  {
323
- "name": "pinepaper_get_letter_collage_options",
324
- "description": "Get available letter collage styles, palettes, and options"
547
+ "name": "pinepaper_set_toolkit",
548
+ "description": "Switch toolkit profile and/or verbosity level at runtime"
325
549
  },
326
550
  {
327
- "name": "pinepaper_get_canvas_presets",
328
- "description": "List all available canvas size presets (YouTube, Instagram, TikTok, etc.)"
551
+ "name": "pinepaper_create_chart",
552
+ "description": "Charts. action: create|update|reconfigure|remove. chartType: bar|line|scatter|area. data, options, chartId. Bar opts: orient:\"horizontal\", labelArrangement: auto|slanted|vertical|truncate|wrap."
329
553
  },
330
554
  {
331
- "name": "pinepaper_tool_guide",
332
- "description": "Get detailed guidance for any tool, category, or the full AI Agent Guide"
555
+ "name": "pinepaper_magic",
556
+ "description": "Auto-animation. action: animate|remix. mood: calm|professional|energetic|dramatic|whimsical. selectionOnly."
333
557
  },
334
558
  {
335
- "name": "pinepaper_set_toolkit",
336
- "description": "Switch toolkit profile and/or verbosity level at runtime"
559
+ "name": "pinepaper_physics",
560
+ "description": "Rigid body sim. action: init|add_body|remove_body|apply_force|apply_impulse|set_velocity|get_state|create_ground|create_joint. gravity, bodyType, mass, friction."
561
+ },
562
+ {
563
+ "name": "pinepaper_measurement",
564
+ "description": "Rulers/grid. action: set_rulers|set_grid|get_dimensions|set_snap. enabled, itemId."
337
565
  }
338
566
  ]
339
567
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pinepaper.studio/mcp-server",
3
- "version": "1.5.5",
3
+ "version": "1.6.0",
4
4
  "mcpName": "io.github.pinepaper/mcp-server",
5
5
  "description": "MCP Server for PinePaper Studio - Create animated graphics with AI",
6
6
  "type": "module",
@@ -36,7 +36,9 @@
36
36
  "test:coverage": "bun test --coverage",
37
37
  "lint": "eslint src/**/*.ts",
38
38
  "typecheck": "tsc --noEmit",
39
- "prepublishOnly": "bun run build"
39
+ "check:manifest": "bun scripts/check-manifest-tools.mjs",
40
+ "fix:manifest": "bun scripts/check-manifest-tools.mjs --fix",
41
+ "prepublishOnly": "bun run check:manifest && bun run build"
40
42
  },
41
43
  "keywords": [
42
44
  "mcp",
@@ -74,6 +76,15 @@
74
76
  "dist",
75
77
  "manifest.json",
76
78
  "README.md",
77
- "LICENSE"
79
+ "LICENSE",
80
+ "assets",
81
+ "README.zh-CN.md",
82
+ "README.ja.md",
83
+ "README.ko.md",
84
+ "README.es.md",
85
+ "README.pt-BR.md",
86
+ "README.fr.md",
87
+ "README.de.md",
88
+ "README.hi.md"
78
89
  ]
79
90
  }