@pinepaper.studio/mcp-server 1.4.1 → 1.4.3

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 (152) hide show
  1. package/README.md +99 -18
  2. package/dist/i18n/locales/ar.d.ts.map +1 -1
  3. package/dist/i18n/locales/ar.js +37 -0
  4. package/dist/i18n/locales/ar.js.map +1 -1
  5. package/dist/i18n/locales/base.d.ts.map +1 -1
  6. package/dist/i18n/locales/base.js +49 -0
  7. package/dist/i18n/locales/base.js.map +1 -1
  8. package/dist/i18n/locales/bn.d.ts.map +1 -1
  9. package/dist/i18n/locales/bn.js +10 -0
  10. package/dist/i18n/locales/bn.js.map +1 -1
  11. package/dist/i18n/locales/cs.d.ts.map +1 -1
  12. package/dist/i18n/locales/cs.js +10 -0
  13. package/dist/i18n/locales/cs.js.map +1 -1
  14. package/dist/i18n/locales/da.d.ts.map +1 -1
  15. package/dist/i18n/locales/da.js +10 -0
  16. package/dist/i18n/locales/da.js.map +1 -1
  17. package/dist/i18n/locales/de.d.ts.map +1 -1
  18. package/dist/i18n/locales/de.js +107 -0
  19. package/dist/i18n/locales/de.js.map +1 -1
  20. package/dist/i18n/locales/el.d.ts.map +1 -1
  21. package/dist/i18n/locales/el.js +10 -0
  22. package/dist/i18n/locales/el.js.map +1 -1
  23. package/dist/i18n/locales/en.d.ts.map +1 -1
  24. package/dist/i18n/locales/en.js +162 -0
  25. package/dist/i18n/locales/en.js.map +1 -1
  26. package/dist/i18n/locales/es.d.ts.map +1 -1
  27. package/dist/i18n/locales/es.js +106 -0
  28. package/dist/i18n/locales/es.js.map +1 -1
  29. package/dist/i18n/locales/fa.d.ts.map +1 -1
  30. package/dist/i18n/locales/fa.js +10 -0
  31. package/dist/i18n/locales/fa.js.map +1 -1
  32. package/dist/i18n/locales/fi.d.ts.map +1 -1
  33. package/dist/i18n/locales/fi.js +10 -0
  34. package/dist/i18n/locales/fi.js.map +1 -1
  35. package/dist/i18n/locales/fil.d.ts.map +1 -1
  36. package/dist/i18n/locales/fil.js +10 -0
  37. package/dist/i18n/locales/fil.js.map +1 -1
  38. package/dist/i18n/locales/fr.d.ts.map +1 -1
  39. package/dist/i18n/locales/fr.js +37 -0
  40. package/dist/i18n/locales/fr.js.map +1 -1
  41. package/dist/i18n/locales/gu.d.ts.map +1 -1
  42. package/dist/i18n/locales/gu.js +10 -0
  43. package/dist/i18n/locales/gu.js.map +1 -1
  44. package/dist/i18n/locales/he.d.ts.map +1 -1
  45. package/dist/i18n/locales/he.js +10 -0
  46. package/dist/i18n/locales/he.js.map +1 -1
  47. package/dist/i18n/locales/hi.d.ts.map +1 -1
  48. package/dist/i18n/locales/hi.js +37 -0
  49. package/dist/i18n/locales/hi.js.map +1 -1
  50. package/dist/i18n/locales/hu.d.ts.map +1 -1
  51. package/dist/i18n/locales/hu.js +10 -0
  52. package/dist/i18n/locales/hu.js.map +1 -1
  53. package/dist/i18n/locales/id.d.ts.map +1 -1
  54. package/dist/i18n/locales/id.js +108 -0
  55. package/dist/i18n/locales/id.js.map +1 -1
  56. package/dist/i18n/locales/is.d.ts.map +1 -1
  57. package/dist/i18n/locales/is.js +10 -0
  58. package/dist/i18n/locales/is.js.map +1 -1
  59. package/dist/i18n/locales/it.d.ts.map +1 -1
  60. package/dist/i18n/locales/it.js +108 -0
  61. package/dist/i18n/locales/it.js.map +1 -1
  62. package/dist/i18n/locales/ja.d.ts.map +1 -1
  63. package/dist/i18n/locales/ja.js +108 -0
  64. package/dist/i18n/locales/ja.js.map +1 -1
  65. package/dist/i18n/locales/kn.d.ts.map +1 -1
  66. package/dist/i18n/locales/kn.js +10 -0
  67. package/dist/i18n/locales/kn.js.map +1 -1
  68. package/dist/i18n/locales/ko.d.ts.map +1 -1
  69. package/dist/i18n/locales/ko.js +37 -0
  70. package/dist/i18n/locales/ko.js.map +1 -1
  71. package/dist/i18n/locales/ml.d.ts.map +1 -1
  72. package/dist/i18n/locales/ml.js +10 -0
  73. package/dist/i18n/locales/ml.js.map +1 -1
  74. package/dist/i18n/locales/mr.d.ts.map +1 -1
  75. package/dist/i18n/locales/mr.js +10 -0
  76. package/dist/i18n/locales/mr.js.map +1 -1
  77. package/dist/i18n/locales/ms.d.ts.map +1 -1
  78. package/dist/i18n/locales/ms.js +10 -0
  79. package/dist/i18n/locales/ms.js.map +1 -1
  80. package/dist/i18n/locales/nl.d.ts.map +1 -1
  81. package/dist/i18n/locales/nl.js +108 -0
  82. package/dist/i18n/locales/nl.js.map +1 -1
  83. package/dist/i18n/locales/no.d.ts.map +1 -1
  84. package/dist/i18n/locales/no.js +10 -0
  85. package/dist/i18n/locales/no.js.map +1 -1
  86. package/dist/i18n/locales/pa.d.ts.map +1 -1
  87. package/dist/i18n/locales/pa.js +10 -0
  88. package/dist/i18n/locales/pa.js.map +1 -1
  89. package/dist/i18n/locales/pl.d.ts.map +1 -1
  90. package/dist/i18n/locales/pl.js +108 -0
  91. package/dist/i18n/locales/pl.js.map +1 -1
  92. package/dist/i18n/locales/pt-BR.d.ts.map +1 -1
  93. package/dist/i18n/locales/pt-BR.js +108 -0
  94. package/dist/i18n/locales/pt-BR.js.map +1 -1
  95. package/dist/i18n/locales/pt.d.ts.map +1 -1
  96. package/dist/i18n/locales/pt.js +10 -0
  97. package/dist/i18n/locales/pt.js.map +1 -1
  98. package/dist/i18n/locales/ro.d.ts.map +1 -1
  99. package/dist/i18n/locales/ro.js +10 -0
  100. package/dist/i18n/locales/ro.js.map +1 -1
  101. package/dist/i18n/locales/ru.d.ts.map +1 -1
  102. package/dist/i18n/locales/ru.js +108 -0
  103. package/dist/i18n/locales/ru.js.map +1 -1
  104. package/dist/i18n/locales/sv.d.ts.map +1 -1
  105. package/dist/i18n/locales/sv.js +10 -0
  106. package/dist/i18n/locales/sv.js.map +1 -1
  107. package/dist/i18n/locales/ta.d.ts.map +1 -1
  108. package/dist/i18n/locales/ta.js +10 -0
  109. package/dist/i18n/locales/ta.js.map +1 -1
  110. package/dist/i18n/locales/te.d.ts.map +1 -1
  111. package/dist/i18n/locales/te.js +10 -0
  112. package/dist/i18n/locales/te.js.map +1 -1
  113. package/dist/i18n/locales/th.d.ts.map +1 -1
  114. package/dist/i18n/locales/th.js +108 -0
  115. package/dist/i18n/locales/th.js.map +1 -1
  116. package/dist/i18n/locales/tl.d.ts.map +1 -1
  117. package/dist/i18n/locales/tl.js +10 -0
  118. package/dist/i18n/locales/tl.js.map +1 -1
  119. package/dist/i18n/locales/tr.d.ts.map +1 -1
  120. package/dist/i18n/locales/tr.js +108 -0
  121. package/dist/i18n/locales/tr.js.map +1 -1
  122. package/dist/i18n/locales/uk.d.ts.map +1 -1
  123. package/dist/i18n/locales/uk.js +108 -0
  124. package/dist/i18n/locales/uk.js.map +1 -1
  125. package/dist/i18n/locales/ur.d.ts.map +1 -1
  126. package/dist/i18n/locales/ur.js +10 -0
  127. package/dist/i18n/locales/ur.js.map +1 -1
  128. package/dist/i18n/locales/vi.d.ts.map +1 -1
  129. package/dist/i18n/locales/vi.js +108 -0
  130. package/dist/i18n/locales/vi.js.map +1 -1
  131. package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
  132. package/dist/i18n/locales/zh-CN.js +108 -0
  133. package/dist/i18n/locales/zh-CN.js.map +1 -1
  134. package/dist/i18n/locales/zh-TW.d.ts.map +1 -1
  135. package/dist/i18n/locales/zh-TW.js +108 -0
  136. package/dist/i18n/locales/zh-TW.js.map +1 -1
  137. package/dist/tools/definitions.d.ts.map +1 -1
  138. package/dist/tools/definitions.js +680 -1
  139. package/dist/tools/definitions.js.map +1 -1
  140. package/dist/tools/handlers.d.ts.map +1 -1
  141. package/dist/tools/handlers.js +71 -1
  142. package/dist/tools/handlers.js.map +1 -1
  143. package/dist/types/code-generator.d.ts +37 -1
  144. package/dist/types/code-generator.d.ts.map +1 -1
  145. package/dist/types/code-generator.js +241 -1
  146. package/dist/types/code-generator.js.map +1 -1
  147. package/dist/types/schemas.d.ts +497 -24
  148. package/dist/types/schemas.d.ts.map +1 -1
  149. package/dist/types/schemas.js +249 -0
  150. package/dist/types/schemas.js.map +1 -1
  151. package/manifest.json +38 -2
  152. package/package.json +2 -1
@@ -2011,7 +2011,7 @@ RETURNS:
2011
2011
  },
2012
2012
  description: `Execute p5.js-style drawing code on the PinePaper canvas.
2013
2013
 
2014
- Claude can use familiar p5.js syntax - the code is translated to Paper.js automatically.
2014
+ AI assistants can use familiar p5.js syntax - the code is translated to Paper.js automatically.
2015
2015
  This is a SUBSET of p5.js functions optimized for static drawings.
2016
2016
 
2017
2017
  AVAILABLE FUNCTIONS:
@@ -2120,6 +2120,685 @@ for (let i = 10; i > 0; i--) {
2120
2120
  required: ['code'],
2121
2121
  },
2122
2122
  },
2123
+ // ---------------------------------------------------------------------------
2124
+ // DIAGRAM TOOLS
2125
+ // ---------------------------------------------------------------------------
2126
+ {
2127
+ name: 'pinepaper_create_diagram_shape',
2128
+ annotations: {
2129
+ title: 'Create Diagram Shape',
2130
+ readOnlyHint: false,
2131
+ destructiveHint: false,
2132
+ idempotentHint: false,
2133
+ openWorldHint: false,
2134
+ },
2135
+ description: `Create a diagram shape on the canvas. Diagram shapes are specialized shapes for flowcharts, UML diagrams, network diagrams, and similar technical drawings.
2136
+
2137
+ USE WHEN:
2138
+ - Creating flowcharts, process diagrams, or workflows
2139
+ - Building UML class diagrams, use case diagrams, or sequence diagrams
2140
+ - Designing network topology diagrams
2141
+ - Making organizational charts or decision trees
2142
+ - Any technical or architectural diagram
2143
+
2144
+ SHAPE TYPES:
2145
+
2146
+ Flowchart shapes:
2147
+ - process: Rectangle for process steps (default: 120x60)
2148
+ - decision: Diamond for yes/no decisions (default: 100x100)
2149
+ - terminal: Rounded rectangle for start/end (default: 120x40)
2150
+ - data: Parallelogram for data I/O (default: 120x60)
2151
+ - document: Wavy-bottom rectangle for documents (default: 100x80)
2152
+ - database: Cylinder for database/storage (default: 80x100)
2153
+ - preparation: Hexagon for preparation steps (default: 120x60)
2154
+
2155
+ UML shapes:
2156
+ - uml-class: Class box with name/attributes/methods sections (default: 150x120)
2157
+ - uml-usecase: Ellipse for use case (default: 140x80)
2158
+ - uml-actor: Stick figure for actor (default: 60x100)
2159
+
2160
+ Network shapes:
2161
+ - cloud: Cloud shape for cloud services (default: 140x90)
2162
+ - server: Server rack shape (default: 80x100)
2163
+
2164
+ Basic shapes (same as pinepaper_create_item but diagram-optimized):
2165
+ - rectangle, circle, triangle, star
2166
+
2167
+ All shapes:
2168
+ - Have connection ports for connectors
2169
+ - Support labels inside the shape
2170
+ - Can be connected using pinepaper_connect or pinepaper_connect_ports
2171
+
2172
+ EXAMPLES:
2173
+ - Flowchart start: {shapeType: "terminal", label: "Start", position: {x: 400, y: 100}}
2174
+ - Decision node: {shapeType: "decision", label: "Is valid?", position: {x: 400, y: 200}}
2175
+ - Database: {shapeType: "database", label: "Users DB", position: {x: 600, y: 200}}
2176
+ - UML Class: {shapeType: "uml-class", label: "User", width: 180, height: 150}
2177
+
2178
+ WORKFLOW TIP:
2179
+ After creating shapes, use pinepaper_connect to draw connectors between them.
2180
+ Use pinepaper_auto_layout to automatically arrange shapes in a clean layout.`,
2181
+ inputSchema: {
2182
+ type: 'object',
2183
+ properties: {
2184
+ shapeType: {
2185
+ type: 'string',
2186
+ enum: ['process', 'decision', 'terminal', 'data', 'document', 'database', 'preparation', 'uml-class', 'uml-usecase', 'uml-actor', 'cloud', 'server', 'rectangle', 'circle', 'triangle', 'star'],
2187
+ description: 'Type of diagram shape to create',
2188
+ },
2189
+ position: {
2190
+ type: 'object',
2191
+ properties: {
2192
+ x: { type: 'number', description: 'X coordinate (default: 400)' },
2193
+ y: { type: 'number', description: 'Y coordinate (default: 300)' },
2194
+ },
2195
+ description: 'Position on canvas',
2196
+ },
2197
+ width: {
2198
+ type: 'number',
2199
+ description: 'Shape width in pixels (uses type-specific default if not specified)',
2200
+ },
2201
+ height: {
2202
+ type: 'number',
2203
+ description: 'Shape height in pixels (uses type-specific default if not specified)',
2204
+ },
2205
+ label: {
2206
+ type: 'string',
2207
+ description: 'Text label inside the shape',
2208
+ },
2209
+ style: {
2210
+ type: 'object',
2211
+ properties: {
2212
+ fillColor: { type: 'string', description: 'Fill color' },
2213
+ strokeColor: { type: 'string', description: 'Stroke color' },
2214
+ strokeWidth: { type: 'number', description: 'Stroke width' },
2215
+ },
2216
+ description: 'Visual styling options',
2217
+ },
2218
+ },
2219
+ required: ['shapeType'],
2220
+ },
2221
+ },
2222
+ {
2223
+ name: 'pinepaper_connect',
2224
+ annotations: {
2225
+ title: 'Connect Items',
2226
+ readOnlyHint: false,
2227
+ destructiveHint: false,
2228
+ idempotentHint: false,
2229
+ openWorldHint: false,
2230
+ },
2231
+ description: `Connect two items with a smart connector. This is the primary way to draw lines/arrows between diagram shapes.
2232
+
2233
+ USE WHEN:
2234
+ - Drawing arrows between flowchart steps
2235
+ - Connecting UML classes with associations
2236
+ - Creating network connections between nodes
2237
+ - Any diagram that needs lines/arrows between elements
2238
+
2239
+ CONNECTOR FEATURES:
2240
+ - Automatic port selection (finds nearest ports)
2241
+ - Smart routing to avoid overlapping shapes
2242
+ - Animated "bolt" effect for data flow visualization
2243
+ - Arrow heads on either or both ends
2244
+ - Labels on connectors
2245
+
2246
+ ROUTING TYPES:
2247
+ - orthogonal: Right-angle turns only (default, best for flowcharts)
2248
+ - direct: Straight line between points
2249
+ - curved: Bezier curve with adjustable curvature
2250
+
2251
+ ARROW STYLES:
2252
+ - classic: Standard filled arrow (default for head)
2253
+ - stealth: Narrow sharp arrow
2254
+ - sharp: Simple pointed arrow
2255
+ - open: Outline arrow (not filled)
2256
+ - diamond: Diamond shape (for UML aggregation)
2257
+ - circle: Circle (for UML composition)
2258
+ - none: No arrowhead (default for tail)
2259
+
2260
+ LINE STYLES:
2261
+ - solid: Continuous line (default)
2262
+ - dashed: Dashed line (for optional relationships)
2263
+ - dotted: Dotted line (for dependencies)
2264
+
2265
+ ANIMATED BOLT:
2266
+ Enable boltEnabled: true to show an animated particle traveling along the connector.
2267
+ Useful for showing data flow, process direction, or network traffic.
2268
+
2269
+ EXAMPLES:
2270
+ - Simple arrow: {sourceItemId: "shape_1", targetItemId: "shape_2"}
2271
+ - Curved line: {sourceItemId: "a", targetItemId: "b", routing: "curved", curvature: 0.7}
2272
+ - Dashed dependency: {sourceItemId: "a", targetItemId: "b", lineStyle: "dashed", headStyle: "open"}
2273
+ - Two-way arrow: {sourceItemId: "a", targetItemId: "b", headStyle: "classic", tailStyle: "classic"}
2274
+ - Labeled connection: {sourceItemId: "a", targetItemId: "b", label: "1..*"}
2275
+
2276
+ RETURNS:
2277
+ - connectorId: ID of the connector (use for updates/removal)
2278
+ - sourceItemId, targetItemId: Connected items`,
2279
+ inputSchema: {
2280
+ type: 'object',
2281
+ properties: {
2282
+ sourceItemId: {
2283
+ type: 'string',
2284
+ description: 'Registry ID of the source item (where arrow starts)',
2285
+ },
2286
+ targetItemId: {
2287
+ type: 'string',
2288
+ description: 'Registry ID of the target item (where arrow points)',
2289
+ },
2290
+ routing: {
2291
+ type: 'string',
2292
+ enum: ['direct', 'orthogonal', 'curved'],
2293
+ description: 'Connector routing style (default: orthogonal)',
2294
+ },
2295
+ lineColor: {
2296
+ type: 'string',
2297
+ description: 'Line color (default: #4B5563)',
2298
+ },
2299
+ lineWidth: {
2300
+ type: 'number',
2301
+ description: 'Line width in pixels (default: 2)',
2302
+ },
2303
+ lineStyle: {
2304
+ type: 'string',
2305
+ enum: ['solid', 'dashed', 'dotted'],
2306
+ description: 'Line style (default: solid)',
2307
+ },
2308
+ headStyle: {
2309
+ type: 'string',
2310
+ enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'],
2311
+ description: 'Arrow head style at target (default: classic)',
2312
+ },
2313
+ tailStyle: {
2314
+ type: 'string',
2315
+ enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'],
2316
+ description: 'Arrow style at source (default: none)',
2317
+ },
2318
+ label: {
2319
+ type: 'string',
2320
+ description: 'Text label on the connector',
2321
+ },
2322
+ curvature: {
2323
+ type: 'number',
2324
+ description: 'Curve intensity for curved routing (0.1-1.0, default: 0.5)',
2325
+ },
2326
+ boltEnabled: {
2327
+ type: 'boolean',
2328
+ description: 'Enable animated bolt effect (default: true)',
2329
+ },
2330
+ boltColor: {
2331
+ type: 'string',
2332
+ description: 'Bolt animation color (default: #fbbf24)',
2333
+ },
2334
+ },
2335
+ required: ['sourceItemId', 'targetItemId'],
2336
+ },
2337
+ },
2338
+ {
2339
+ name: 'pinepaper_connect_ports',
2340
+ annotations: {
2341
+ title: 'Connect Specific Ports',
2342
+ readOnlyHint: false,
2343
+ destructiveHint: false,
2344
+ idempotentHint: false,
2345
+ openWorldHint: false,
2346
+ },
2347
+ description: `Connect two specific ports on items. Use this when you need precise control over which ports the connector attaches to.
2348
+
2349
+ USE WHEN:
2350
+ - Need connector to attach to specific side of shape
2351
+ - Creating complex diagrams where automatic port selection isn't ideal
2352
+ - Building circuit-like diagrams with specific entry/exit points
2353
+ - Connecting specific input/output ports
2354
+
2355
+ PORT POSITIONS:
2356
+ Standard positions:
2357
+ - top, bottom, left, right: Center of each edge
2358
+ - top-left, top-right, bottom-left, bottom-right: Corners
2359
+ - center: Center of the shape
2360
+
2361
+ Line/path specific:
2362
+ - start: Beginning of path
2363
+ - end: End of path
2364
+
2365
+ EXAMPLES:
2366
+ - Top to bottom: {sourceItemId: "a", sourcePort: "bottom", targetItemId: "b", targetPort: "top"}
2367
+ - Left to right: {sourceItemId: "a", sourcePort: "right", targetItemId: "b", targetPort: "left"}
2368
+ - Corner connection: {sourceItemId: "a", sourcePort: "bottom-right", targetItemId: "b", targetPort: "top-left"}
2369
+
2370
+ CONFIG OPTIONS:
2371
+ Same as pinepaper_connect: routing, lineColor, lineWidth, lineStyle, headStyle, tailStyle, label, curvature, boltEnabled, boltColor`,
2372
+ inputSchema: {
2373
+ type: 'object',
2374
+ properties: {
2375
+ sourceItemId: {
2376
+ type: 'string',
2377
+ description: 'Registry ID of the source item',
2378
+ },
2379
+ sourcePort: {
2380
+ type: 'string',
2381
+ enum: ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'center', 'start', 'end'],
2382
+ description: 'Port position on source item',
2383
+ },
2384
+ targetItemId: {
2385
+ type: 'string',
2386
+ description: 'Registry ID of the target item',
2387
+ },
2388
+ targetPort: {
2389
+ type: 'string',
2390
+ enum: ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'center', 'start', 'end'],
2391
+ description: 'Port position on target item',
2392
+ },
2393
+ config: {
2394
+ type: 'object',
2395
+ properties: {
2396
+ routing: { type: 'string', enum: ['direct', 'orthogonal', 'curved'] },
2397
+ lineColor: { type: 'string' },
2398
+ lineWidth: { type: 'number' },
2399
+ lineStyle: { type: 'string', enum: ['solid', 'dashed', 'dotted'] },
2400
+ headStyle: { type: 'string', enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'] },
2401
+ tailStyle: { type: 'string', enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'] },
2402
+ label: { type: 'string' },
2403
+ curvature: { type: 'number' },
2404
+ boltEnabled: { type: 'boolean' },
2405
+ boltColor: { type: 'string' },
2406
+ },
2407
+ description: 'Connector configuration options',
2408
+ },
2409
+ },
2410
+ required: ['sourceItemId', 'sourcePort', 'targetItemId', 'targetPort'],
2411
+ },
2412
+ },
2413
+ {
2414
+ name: 'pinepaper_add_ports',
2415
+ annotations: {
2416
+ title: 'Add Ports to Item',
2417
+ readOnlyHint: false,
2418
+ destructiveHint: false,
2419
+ idempotentHint: false,
2420
+ openWorldHint: false,
2421
+ },
2422
+ description: `Add connection ports to an existing item. Ports are anchor points where connectors can attach.
2423
+
2424
+ USE WHEN:
2425
+ - Adding custom port positions to shapes
2426
+ - Enabling connections on items that don't have ports
2427
+ - Creating specialized connection points for complex diagrams
2428
+
2429
+ PORT TYPES:
2430
+ - standard: Standard 4 ports (top, bottom, left, right)
2431
+ - line: 2 ports (start, end) for line-like items
2432
+ - path: N ports distributed along a path
2433
+ - custom: User-defined port positions
2434
+
2435
+ CUSTOM PORTS:
2436
+ Define specific ports with position and type:
2437
+ - position: where on the item (top, bottom, left, right, corners)
2438
+ - type: input (accept incoming), output (start outgoing), or both
2439
+
2440
+ EXAMPLES:
2441
+ - Standard 4 ports: {itemId: "shape_1", portType: "standard"}
2442
+ - Line endpoints: {itemId: "line_1", portType: "line"}
2443
+ - Path with 5 ports: {itemId: "path_1", portType: "path", count: 5}
2444
+ - Custom ports: {itemId: "shape_1", portType: "custom", ports: [{position: "top", type: "input"}, {position: "bottom", type: "output"}]}`,
2445
+ inputSchema: {
2446
+ type: 'object',
2447
+ properties: {
2448
+ itemId: {
2449
+ type: 'string',
2450
+ description: 'Registry ID of the item to add ports to',
2451
+ },
2452
+ portType: {
2453
+ type: 'string',
2454
+ enum: ['standard', 'line', 'path', 'custom'],
2455
+ description: 'Type of port configuration (default: standard)',
2456
+ },
2457
+ ports: {
2458
+ type: 'array',
2459
+ items: {
2460
+ type: 'object',
2461
+ properties: {
2462
+ position: {
2463
+ type: 'string',
2464
+ enum: ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'center', 'start', 'end'],
2465
+ },
2466
+ type: {
2467
+ type: 'string',
2468
+ enum: ['input', 'output', 'both'],
2469
+ },
2470
+ },
2471
+ },
2472
+ description: 'Custom port definitions (for portType: "custom")',
2473
+ },
2474
+ count: {
2475
+ type: 'number',
2476
+ description: 'Number of ports for path type',
2477
+ },
2478
+ },
2479
+ required: ['itemId'],
2480
+ },
2481
+ },
2482
+ {
2483
+ name: 'pinepaper_auto_layout',
2484
+ annotations: {
2485
+ title: 'Auto Layout',
2486
+ readOnlyHint: false,
2487
+ destructiveHint: false,
2488
+ idempotentHint: false,
2489
+ openWorldHint: false,
2490
+ },
2491
+ description: `Automatically arrange diagram items using a layout algorithm. This reorganizes items for cleaner, more readable diagrams.
2492
+
2493
+ USE WHEN:
2494
+ - Diagram items are messy or overlapping
2495
+ - Want to create a professional-looking layout automatically
2496
+ - After adding many items, need to organize them
2497
+ - Creating hierarchical structures (org charts, trees)
2498
+
2499
+ LAYOUT TYPES:
2500
+
2501
+ hierarchical:
2502
+ - Best for: flowcharts, org charts, dependency graphs
2503
+ - Arranges items in levels from top to bottom (or other directions)
2504
+ - Respects connector direction for parent-child relationships
2505
+ - Options: direction (TB/BT/LR/RL), levelSpacing, nodeSpacing
2506
+
2507
+ force-directed:
2508
+ - Best for: network diagrams, relationship graphs
2509
+ - Uses physics simulation (attraction/repulsion)
2510
+ - Good for showing clusters and relationships
2511
+ - Options: iterations, attraction, repulsion
2512
+
2513
+ tree:
2514
+ - Best for: hierarchies, file systems, family trees
2515
+ - Similar to hierarchical but optimized for tree structures
2516
+ - Options: direction, levelSpacing, nodeSpacing
2517
+
2518
+ radial:
2519
+ - Best for: mind maps, hub-and-spoke diagrams
2520
+ - Places items in concentric circles around a center
2521
+ - Options: centerX, centerY, startRadius, radiusStep
2522
+
2523
+ grid:
2524
+ - Best for: equal-importance items, component libraries
2525
+ - Arranges items in rows and columns
2526
+ - Options: columns, cellWidth, cellHeight
2527
+
2528
+ ANIMATION:
2529
+ By default, items animate smoothly to their new positions.
2530
+ Set animate: false for instant repositioning.
2531
+
2532
+ EXAMPLES:
2533
+ - Flowchart layout: {layoutType: "hierarchical", options: {direction: "TB", levelSpacing: 100}}
2534
+ - Network diagram: {layoutType: "force-directed", options: {iterations: 200, repulsion: 2000}}
2535
+ - Mind map: {layoutType: "radial", options: {centerX: 400, centerY: 300}}
2536
+ - Grid of icons: {layoutType: "grid", options: {columns: 4, cellWidth: 120}}
2537
+
2538
+ PARTIAL LAYOUT:
2539
+ Pass itemIds array to only layout specific items, leaving others in place.`,
2540
+ inputSchema: {
2541
+ type: 'object',
2542
+ properties: {
2543
+ layoutType: {
2544
+ type: 'string',
2545
+ enum: ['hierarchical', 'force-directed', 'tree', 'radial', 'grid'],
2546
+ description: 'Layout algorithm to use',
2547
+ },
2548
+ itemIds: {
2549
+ type: 'array',
2550
+ items: { type: 'string' },
2551
+ description: 'Specific items to layout (default: all diagram items)',
2552
+ },
2553
+ options: {
2554
+ type: 'object',
2555
+ properties: {
2556
+ direction: {
2557
+ type: 'string',
2558
+ enum: ['TB', 'BT', 'LR', 'RL'],
2559
+ description: 'Layout direction (TB=top-to-bottom, LR=left-to-right, etc.)',
2560
+ },
2561
+ levelSpacing: {
2562
+ type: 'number',
2563
+ description: 'Vertical spacing between levels (default: 100)',
2564
+ },
2565
+ nodeSpacing: {
2566
+ type: 'number',
2567
+ description: 'Horizontal spacing between nodes (default: 80)',
2568
+ },
2569
+ iterations: {
2570
+ type: 'number',
2571
+ description: 'Iterations for force-directed layout (default: 100)',
2572
+ },
2573
+ attraction: {
2574
+ type: 'number',
2575
+ description: 'Attraction force for connected nodes (default: 0.01)',
2576
+ },
2577
+ repulsion: {
2578
+ type: 'number',
2579
+ description: 'Repulsion force between all nodes (default: 1000)',
2580
+ },
2581
+ columns: {
2582
+ type: 'number',
2583
+ description: 'Number of columns for grid layout',
2584
+ },
2585
+ cellWidth: {
2586
+ type: 'number',
2587
+ description: 'Cell width for grid layout (default: 150)',
2588
+ },
2589
+ cellHeight: {
2590
+ type: 'number',
2591
+ description: 'Cell height for grid layout (default: 100)',
2592
+ },
2593
+ centerX: {
2594
+ type: 'number',
2595
+ description: 'Center X for radial layout',
2596
+ },
2597
+ centerY: {
2598
+ type: 'number',
2599
+ description: 'Center Y for radial layout',
2600
+ },
2601
+ startRadius: {
2602
+ type: 'number',
2603
+ description: 'Starting radius for radial layout (default: 100)',
2604
+ },
2605
+ radiusStep: {
2606
+ type: 'number',
2607
+ description: 'Radius increment per level for radial layout (default: 80)',
2608
+ },
2609
+ animate: {
2610
+ type: 'boolean',
2611
+ description: 'Animate transition to new positions (default: true)',
2612
+ },
2613
+ animationDuration: {
2614
+ type: 'number',
2615
+ description: 'Animation duration in ms (default: 300)',
2616
+ },
2617
+ },
2618
+ description: 'Layout-specific options',
2619
+ },
2620
+ },
2621
+ required: ['layoutType'],
2622
+ },
2623
+ },
2624
+ {
2625
+ name: 'pinepaper_get_diagram_shapes',
2626
+ annotations: {
2627
+ title: 'Get Diagram Shapes',
2628
+ readOnlyHint: true,
2629
+ destructiveHint: false,
2630
+ idempotentHint: true,
2631
+ openWorldHint: false,
2632
+ },
2633
+ description: `Get a list of available diagram shapes with their properties.
2634
+
2635
+ USE WHEN:
2636
+ - Need to see what diagram shapes are available
2637
+ - Want to know default sizes and styling for shapes
2638
+ - Building dynamic UI that shows shape options
2639
+
2640
+ CATEGORIES:
2641
+ - flowchart: process, decision, terminal, data, document, database, preparation
2642
+ - uml: uml-class, uml-usecase, uml-actor
2643
+ - network: cloud, server
2644
+ - basic: rectangle, circle, triangle, star
2645
+
2646
+ RETURNS:
2647
+ Array of shape definitions including:
2648
+ - name: Shape identifier
2649
+ - category: Category it belongs to
2650
+ - defaultWidth, defaultHeight: Default dimensions
2651
+ - defaultStyle: Default colors and stroke
2652
+ - description: What the shape represents`,
2653
+ inputSchema: {
2654
+ type: 'object',
2655
+ properties: {
2656
+ category: {
2657
+ type: 'string',
2658
+ enum: ['flowchart', 'uml', 'network', 'basic'],
2659
+ description: 'Filter by category (optional - returns all if not specified)',
2660
+ },
2661
+ },
2662
+ },
2663
+ },
2664
+ {
2665
+ name: 'pinepaper_update_connector',
2666
+ annotations: {
2667
+ title: 'Update Connector',
2668
+ readOnlyHint: false,
2669
+ destructiveHint: false,
2670
+ idempotentHint: true,
2671
+ openWorldHint: false,
2672
+ },
2673
+ description: `Update the style or label of an existing connector.
2674
+
2675
+ USE WHEN:
2676
+ - Changing connector appearance after creation
2677
+ - Updating connector labels
2678
+ - Changing arrow styles or colors
2679
+
2680
+ UPDATABLE PROPERTIES:
2681
+ - style: lineColor, lineWidth, headStyle, tailStyle, routing, lineStyle
2682
+ - label: Text label on the connector
2683
+ - labelPosition: Position along path (0-1, where 0.5 is middle)
2684
+
2685
+ EXAMPLES:
2686
+ - Change color: {connectorId: "conn_1", style: {lineColor: "#ef4444"}}
2687
+ - Add label: {connectorId: "conn_1", label: "data flow"}
2688
+ - Change to dashed: {connectorId: "conn_1", style: {lineStyle: "dashed"}}
2689
+ - Move label: {connectorId: "conn_1", labelPosition: 0.25}`,
2690
+ inputSchema: {
2691
+ type: 'object',
2692
+ properties: {
2693
+ connectorId: {
2694
+ type: 'string',
2695
+ description: 'ID of the connector to update',
2696
+ },
2697
+ style: {
2698
+ type: 'object',
2699
+ properties: {
2700
+ lineColor: { type: 'string' },
2701
+ lineWidth: { type: 'number' },
2702
+ headStyle: { type: 'string', enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'] },
2703
+ tailStyle: { type: 'string', enum: ['classic', 'stealth', 'sharp', 'open', 'diamond', 'circle', 'none'] },
2704
+ routing: { type: 'string', enum: ['direct', 'orthogonal', 'curved'] },
2705
+ lineStyle: { type: 'string', enum: ['solid', 'dashed', 'dotted'] },
2706
+ },
2707
+ description: 'Style properties to update',
2708
+ },
2709
+ label: {
2710
+ type: 'string',
2711
+ description: 'New label text',
2712
+ },
2713
+ labelPosition: {
2714
+ type: 'number',
2715
+ description: 'Label position along path (0-1)',
2716
+ },
2717
+ },
2718
+ required: ['connectorId'],
2719
+ },
2720
+ },
2721
+ {
2722
+ name: 'pinepaper_remove_connector',
2723
+ annotations: {
2724
+ title: 'Remove Connector',
2725
+ readOnlyHint: false,
2726
+ destructiveHint: true,
2727
+ idempotentHint: true,
2728
+ openWorldHint: false,
2729
+ },
2730
+ description: `Remove a connector from the canvas.
2731
+
2732
+ USE WHEN:
2733
+ - Deleting a connection between items
2734
+ - Removing incorrect links
2735
+ - Restructuring diagram connections`,
2736
+ inputSchema: {
2737
+ type: 'object',
2738
+ properties: {
2739
+ connectorId: {
2740
+ type: 'string',
2741
+ description: 'ID of the connector to remove',
2742
+ },
2743
+ },
2744
+ required: ['connectorId'],
2745
+ },
2746
+ },
2747
+ {
2748
+ name: 'pinepaper_diagram_mode',
2749
+ annotations: {
2750
+ title: 'Diagram Mode',
2751
+ readOnlyHint: false,
2752
+ destructiveHint: false,
2753
+ idempotentHint: true,
2754
+ openWorldHint: false,
2755
+ },
2756
+ description: `Control the diagram mode for interactive editing.
2757
+
2758
+ USE WHEN:
2759
+ - Switching between drawing and selection modes
2760
+ - Enabling/disabling diagram-specific UI
2761
+ - Setting up the canvas for diagram creation
2762
+
2763
+ ACTIONS:
2764
+ - activate: Enable diagram mode (shows grid, snap, port indicators)
2765
+ - deactivate: Return to normal canvas mode
2766
+ - toggle: Switch between diagram and normal mode
2767
+ - setMode: Set specific tool mode (select, connect, shape, pan)
2768
+
2769
+ TOOL MODES (for setMode action):
2770
+ - select: Selection and moving items
2771
+ - connect: Drawing connectors between items
2772
+ - shape: Drawing new shapes (optionally specify shapeType)
2773
+ - pan: Panning the canvas
2774
+
2775
+ EXAMPLES:
2776
+ - Enter diagram mode: {action: "activate"}
2777
+ - Exit diagram mode: {action: "deactivate"}
2778
+ - Set to connect mode: {action: "setMode", mode: "connect"}
2779
+ - Set to draw rectangles: {action: "setMode", mode: "shape", shapeType: "process"}`,
2780
+ inputSchema: {
2781
+ type: 'object',
2782
+ properties: {
2783
+ action: {
2784
+ type: 'string',
2785
+ enum: ['activate', 'deactivate', 'toggle', 'setMode'],
2786
+ description: 'Action to perform',
2787
+ },
2788
+ mode: {
2789
+ type: 'string',
2790
+ enum: ['select', 'connect', 'shape', 'pan'],
2791
+ description: 'Tool mode (for setMode action)',
2792
+ },
2793
+ shapeType: {
2794
+ type: 'string',
2795
+ enum: ['process', 'decision', 'terminal', 'data', 'document', 'database', 'preparation', 'uml-class', 'uml-usecase', 'uml-actor', 'cloud', 'server', 'rectangle', 'circle', 'triangle', 'star'],
2796
+ description: 'Shape type for shape mode',
2797
+ },
2798
+ },
2799
+ required: ['action'],
2800
+ },
2801
+ },
2123
2802
  ];
2124
2803
  /**
2125
2804
  * Get a tool definition by name