@pinepaper.studio/mcp-server 1.6.23 → 1.6.24
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/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.hi.md +1 -1
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +84 -5
- package/README.pt-BR.md +1 -1
- package/README.zh-CN.md +1 -1
- package/SECURITY.md +46 -0
- package/dist/agent/types.d.ts +114 -106
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/browser/puppeteer-controller.js +2 -2
- package/dist/browser/puppeteer-controller.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/ontology/hints.d.ts.map +1 -1
- package/dist/ontology/hints.js +5 -1
- package/dist/ontology/hints.js.map +1 -1
- package/dist/ontology/upstream-vocabulary.d.ts +1 -1
- package/dist/ontology/upstream-vocabulary.js +1 -1
- package/dist/ontology/vocabulary.d.ts.map +1 -1
- package/dist/ontology/vocabulary.js +1 -0
- package/dist/ontology/vocabulary.js.map +1 -1
- package/dist/tools/batch-macros.d.ts +27 -0
- package/dist/tools/batch-macros.d.ts.map +1 -0
- package/dist/tools/batch-macros.js +157 -0
- package/dist/tools/batch-macros.js.map +1 -0
- package/dist/tools/choreograph.d.ts.map +1 -1
- package/dist/tools/choreograph.js +2 -0
- package/dist/tools/choreograph.js.map +1 -1
- package/dist/tools/compact-descriptions.js +3 -3
- package/dist/tools/compact-descriptions.js.map +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +87 -5
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/engine-lists.d.ts +2 -2
- package/dist/tools/engine-lists.js +2 -2
- package/dist/tools/engine-methods.d.ts.map +1 -1
- package/dist/tools/engine-methods.js +1 -0
- package/dist/tools/engine-methods.js.map +1 -1
- package/dist/tools/engine-surface.d.ts +1 -1
- package/dist/tools/engine-surface.d.ts.map +1 -1
- package/dist/tools/engine-surface.js +52 -6
- package/dist/tools/engine-surface.js.map +1 -1
- package/dist/tools/export-file-check.d.ts +31 -0
- package/dist/tools/export-file-check.d.ts.map +1 -0
- package/dist/tools/export-file-check.js +103 -0
- package/dist/tools/export-file-check.js.map +1 -0
- package/dist/tools/export-file-receipt.d.ts +56 -0
- package/dist/tools/export-file-receipt.d.ts.map +1 -0
- package/dist/tools/export-file-receipt.js +151 -0
- package/dist/tools/export-file-receipt.js.map +1 -0
- package/dist/tools/handlers/beats.d.ts +7 -44
- package/dist/tools/handlers/beats.d.ts.map +1 -1
- package/dist/tools/handlers/export.d.ts.map +1 -1
- package/dist/tools/handlers/export.js +31 -6
- package/dist/tools/handlers/export.js.map +1 -1
- package/dist/tools/handlers/generate.d.ts +41 -270
- package/dist/tools/handlers/generate.d.ts.map +1 -1
- package/dist/tools/handlers.d.ts +67 -1
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +304 -67
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/lane.d.ts +34 -0
- package/dist/tools/lane.d.ts.map +1 -0
- package/dist/tools/lane.js +210 -0
- package/dist/tools/lane.js.map +1 -0
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +3 -2
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/nested-ignored.d.ts +16 -0
- package/dist/tools/nested-ignored.d.ts.map +1 -0
- package/dist/tools/nested-ignored.js +83 -0
- package/dist/tools/nested-ignored.js.map +1 -0
- package/dist/tools/shape-params.d.ts +2 -2
- package/dist/tools/shape-params.d.ts.map +1 -1
- package/dist/tools/shape-params.js +9 -2
- package/dist/tools/shape-params.js.map +1 -1
- package/dist/tools/stick-vocabulary.d.ts +4 -4
- package/dist/tools/stick-vocabulary.d.ts.map +1 -1
- package/dist/tools/stick-vocabulary.js +8 -4
- package/dist/tools/stick-vocabulary.js.map +1 -1
- package/dist/tools/timeline.d.ts +136 -0
- package/dist/tools/timeline.d.ts.map +1 -0
- package/dist/tools/timeline.js +1036 -0
- package/dist/tools/timeline.js.map +1 -0
- package/dist/tools/toolkits.d.ts +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +12 -2
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +30 -2
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +277 -53
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +5276 -25048
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +78 -40
- package/dist/types/schemas.js.map +1 -1
- package/manifest.json +5 -1
- package/package.json +8 -7
|
@@ -81,6 +81,8 @@ The generated code is shown in tool responses and can be copied into PinePaper's
|
|
|
81
81
|
|
|
82
82
|
${CHOOSE_THE_DOOR}
|
|
83
83
|
|
|
84
|
+
THE AGENT LANE — when the job is a scene of shapes, text, keyframes and relations exported to a file (a data animation, a title card, a motion test), and no craft tool above is wanted: PINEPAPER_TOOLKIT=lane (or pinepaper_set_toolkit {toolkit: "lane"}) serves five tools — pinepaper_agent_batch_execute, pinepaper_keyframe_animate, pinepaper_pattern, pinepaper_agent_export, pinepaper_lint_scene — whose descriptions carry the rules that otherwise cost a failed build (the keyframe shape, an item's words and look inside properties, position is the centre). The whole contract is under 10k tokens. Use the full surface for characters, styled scenes, maps, diagrams and sound.
|
|
85
|
+
|
|
84
86
|
WORKFLOW — Create → Validate → Iterate:
|
|
85
87
|
|
|
86
88
|
1. pinepaper_agent_start_job (clearCanvas: true, canvasPreset)
|
|
@@ -4825,6 +4827,57 @@ EXAMPLE:
|
|
|
4825
4827
|
},
|
|
4826
4828
|
},
|
|
4827
4829
|
},
|
|
4830
|
+
{
|
|
4831
|
+
name: 'pinepaper_pattern',
|
|
4832
|
+
annotations: {
|
|
4833
|
+
title: 'Pattern',
|
|
4834
|
+
readOnlyHint: false,
|
|
4835
|
+
destructiveHint: false,
|
|
4836
|
+
idempotentHint: false,
|
|
4837
|
+
openWorldHint: false,
|
|
4838
|
+
},
|
|
4839
|
+
description: `Move many items with ONE stored declaration instead of a keyframe track on each: a wave running through a row of letters, a stagger spreading across a grid. The pattern is kept as a node: change its amplitude once and every member follows; remove it and the members go back to where they were. It is saved with the scene, undone as one step and restored on load.
|
|
4840
|
+
|
|
4841
|
+
KINDS:
|
|
4842
|
+
- phase_wave — members move on a sine, each a phase later than the one before. params: property ('y' default, 'x', 'rotation', 'opacity'), amplitude (px, degrees or 0..1), period (seconds per cycle), wavelength (members per full cycle), phase (radians). window { from, to } limits when it plays; time counts from \`from\`.
|
|
4843
|
+
- stagger — each member's animationDelay, derived from its place. params: step (s between neighbours), start (s), order: index | reverse | center | edges.
|
|
4844
|
+
|
|
4845
|
+
MEMBERS — by names (a '*' matches any run: "letter-*"), ids, or a tag, in the order they are given; an array is taken as ids or names. A name that matches nothing is reported in the result, not ignored.
|
|
4846
|
+
|
|
4847
|
+
ACTIONS: create (needs id, kind, members) · modify (id + params, members or window) · remove (id) · list · get (id: the pattern and the items it holds).
|
|
4848
|
+
|
|
4849
|
+
EXAMPLE — a word waving, letter after letter:
|
|
4850
|
+
{ "action": "create", "id": "wave", "kind": "phase_wave", "members": { "names": "letter-*" }, "params": { "amplitude": 12, "period": 1.2, "wavelength": 6 } }`,
|
|
4851
|
+
inputSchema: {
|
|
4852
|
+
type: 'object',
|
|
4853
|
+
properties: {
|
|
4854
|
+
action: { type: 'string', enum: ['create', 'modify', 'remove', 'list', 'get'], description: 'create · modify · remove · list · get' },
|
|
4855
|
+
id: { type: 'string', description: "the pattern's name; required except for list" },
|
|
4856
|
+
kind: { type: 'string', enum: ['phase_wave', 'stagger'], description: 'create: phase_wave or stagger' },
|
|
4857
|
+
members: {
|
|
4858
|
+
description: 'which items: an array of ids or names, or { ids, names, tag }',
|
|
4859
|
+
oneOf: [
|
|
4860
|
+
{ type: 'array', items: { type: 'string' } },
|
|
4861
|
+
{
|
|
4862
|
+
type: 'object',
|
|
4863
|
+
properties: {
|
|
4864
|
+
ids: { type: 'array', items: { type: 'string' } },
|
|
4865
|
+
names: { oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }] },
|
|
4866
|
+
tag: { type: 'string' },
|
|
4867
|
+
},
|
|
4868
|
+
},
|
|
4869
|
+
],
|
|
4870
|
+
},
|
|
4871
|
+
params: { type: 'object', description: 'phase_wave: property, amplitude, period, wavelength, phase · stagger: step, start, order' },
|
|
4872
|
+
window: {
|
|
4873
|
+
type: ['object', 'null'],
|
|
4874
|
+
properties: { from: { type: 'number' }, to: { type: 'number' } },
|
|
4875
|
+
description: 'phase_wave: when it plays, in scene seconds',
|
|
4876
|
+
},
|
|
4877
|
+
},
|
|
4878
|
+
required: ['action'],
|
|
4879
|
+
},
|
|
4880
|
+
},
|
|
4828
4881
|
{
|
|
4829
4882
|
name: 'pinepaper_stagger',
|
|
4830
4883
|
annotations: {
|
|
@@ -7993,7 +8046,7 @@ ACTIONS:
|
|
|
7993
8046
|
SPEC:
|
|
7994
8047
|
- mode: 'burst' (default) — bursts: [{ t, x, y, count, …per-burst overrides }]: a pop of particles at scene time t.
|
|
7995
8048
|
- mode: 'trail' (or give target) — target (an item id), rate (per second), emitWindows [[t0, t1], …], window, offset: particles shed from a moving item.
|
|
7996
|
-
- look and physics (per emitter or per burst): shape ('circle' | 'rect' | 'dash' | 'star' | 'confetti', or an array), palette [colours], size / sizes / sizeEnd, speed + angle ranges or velocities, gravity (px/s², +down), drag, friction, lifetime, fadeIn / fadeOut, spin, opacity, jitter, jitterGrow, seed.
|
|
8049
|
+
- look and physics (per emitter or per burst): shape ('circle' | 'rect' | 'dash' | 'star' | 'confetti', or an array), palette [colours], size / sizes / sizeEnd, speed + angle ranges or velocities ([[vx, vy], …] px/s, or [{x, y}, …]; particle i takes velocities[i % length], so give one per particle — the reply warns when count and the list differ), gravity (px/s², +down), drag, friction, lifetime, fadeIn / fadeOut, spin, opacity, jitter, jitterGrow, seed.
|
|
7997
8050
|
UNITS (a number, or a [min, max] range picked per particle where it says range):
|
|
7998
8051
|
- count: particles per burst, at most 10000 on the current studio (2000 on older studios) — a larger count is drawn at the cap and the reply warns with the number drawn. For more, add a second burst at the same t.
|
|
7999
8052
|
- speed: px/s (range). angle: degrees, 0 = right, 90 = down (range). gravity: px/s². lifetime: seconds (range, > 0). size: px (range).
|
|
@@ -8688,6 +8741,8 @@ ANIMATION:
|
|
|
8688
8741
|
keyframe_animate — Timed animation: {itemId, keyframes: [{time, properties, easing}], duration, loop, append}. Replaces the item's track unless append: true (or mode: 'merge', the studio's spelling); two ops on one item in a batch are merged into one.
|
|
8689
8742
|
Animatable properties: opacity, scale, scaleX, scaleY, x, y, rotation, fillColor, strokeColor, strokeWidth, width, height, radius, fontSize, trimStart/trimEnd/trimOffset (path draw-on)
|
|
8690
8743
|
Easing (on the keyframe being moved TO): ${KEYFRAME_EASINGS_LIST}
|
|
8744
|
+
timeline — GSAP's timeline as JSON, compiled onto keyframe tracks (nothing is evaluated): {defaults: {ease, duration}, tweens: [{to: name | id | "$N" | [...] | "bar-*", vars: end values, from: start values, duration, delay, at: seconds | "<" | ">" | "+=0.2" | label, stagger: N | {each, from}, ease: "power2.out" | "none" | "back.out" | …, repeat, yoyo, repeatDelay}], duration?, labels?}. x/y are OFFSETS from where the item was created (as in GSAP); scale/scaleY on a bottom-anchored item (or transformOrigin "bottom") holds its edge; drawSVG "0%"→"100%" draws a path on; fill/color → fillColor. Every track is as long as the timeline. A tween it cannot carry is refused by name; the result has a receipt per tween.
|
|
8745
|
+
{type: "timeline", defaults: {ease: "power2.out"}, tweens: [{to: "bar-*", from: {scaleY: 0}, vars: {scaleY: 1}, duration: 0.8, at: 0.5, stagger: 0.15}, {to: "ring", vars: {rotation: 480}, duration: 8, ease: "none", at: 0}]}
|
|
8691
8746
|
relation — Behavioral link: {sourceId, targetId, relationType, relationOptions}
|
|
8692
8747
|
relationType: orbits, follows, attached_to, points_at, mirrors, parallax, wave_through, morphs_to, group_morphs_to, moves_along_path (+ 9 more in schema)
|
|
8693
8748
|
|
|
@@ -8733,8 +8788,8 @@ EXAMPLE — Animated sky scene with timed reveals:
|
|
|
8733
8788
|
properties: {
|
|
8734
8789
|
type: {
|
|
8735
8790
|
type: 'string',
|
|
8736
|
-
enum: ['set_canvas_size', 'set_background', 'execute_generator', 'create', 'modify', 'delete', 'group', 'animate', 'keyframe_animate', 'relation', 'apply_mask', 'apply_effect', 'play_timeline'],
|
|
8737
|
-
description: 'Operation type',
|
|
8791
|
+
enum: ['set_canvas_size', 'set_background', 'execute_generator', 'create', 'modify', 'delete', 'group', 'animate', 'keyframe_animate', 'relation', 'apply_mask', 'apply_effect', 'play_timeline', 'ring', 'grid', 'orbit', 'stagger', 'patch', 'timeline'],
|
|
8792
|
+
description: 'Operation type. timeline compiles a GSAP-shaped timeline onto keyframe tracks. ring / grid make many items in one op (each a create, so each fills a $N slot in order), orbit binds an orbits relation (making the orbiting item when itemType is given), stagger plays the same keyframes on itemIds one after another, patch changes the item with that name (refused when several items hold it).',
|
|
8738
8793
|
},
|
|
8739
8794
|
// Canvas setup
|
|
8740
8795
|
width: { type: 'number', description: 'Canvas width for set_canvas_size (100-16384)' },
|
|
@@ -8821,8 +8876,32 @@ EXAMPLE — Animated sky scene with timed reveals:
|
|
|
8821
8876
|
description: 'For play_timeline: action',
|
|
8822
8877
|
},
|
|
8823
8878
|
time: { type: 'number', description: 'For play_timeline seek: time in seconds' },
|
|
8879
|
+
// Macros
|
|
8880
|
+
count: { type: 'integer', minimum: 1, maximum: 200, description: 'ring: how many items (default 12)' },
|
|
8881
|
+
center: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' } }, description: 'ring: the centre {x, y} (default 400, 300)' },
|
|
8882
|
+
radius: { type: 'number', description: 'ring: the circle the items sit on (default 150). orbit: the orbit radius.' },
|
|
8883
|
+
startAngle: { type: 'number', description: 'ring: degrees of the first item, clockwise from 3 o\'clock (default -90, the top)' },
|
|
8884
|
+
orient: { type: 'boolean', description: 'ring: turn each item to face out from the centre' },
|
|
8885
|
+
period: { type: 'number', description: 'ring: seconds for the stagger to travel once round (stagger = period / count)' },
|
|
8886
|
+
stagger: { type: 'number', description: 'ring, grid, stagger: seconds between one item\'s keyframes and the next' },
|
|
8887
|
+
rows: { type: 'integer', minimum: 1, description: 'grid: rows' },
|
|
8888
|
+
cols: { type: 'integer', minimum: 1, description: 'grid: columns (rows × cols up to 200)' },
|
|
8889
|
+
origin: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' } }, description: 'grid: the first item {x, y} (default 100, 100)' },
|
|
8890
|
+
spacing: { oneOf: [{ type: 'number' }, { type: 'array', items: { type: 'number' }, minItems: 2, maxItems: 2 }], description: 'grid: gap between centres, or [dx, dy] (default 50)' },
|
|
8891
|
+
name: { type: 'string', description: 'ring, grid: name prefix (items are name_0, name_1 … or name_row_col). orbit: the made item\'s name. patch: the item to change.' },
|
|
8892
|
+
speed: { type: 'number', description: 'orbit: the orbits relation\'s speed (its own units; omit for the studio default)' },
|
|
8893
|
+
phaseDegrees: { type: 'number', description: 'orbit: starting angle in degrees' },
|
|
8894
|
+
// GSAP-shaped timeline (src/tools/timeline.ts)
|
|
8895
|
+
tweens: { type: 'array', items: { type: 'object' }, description: 'For timeline: [{to, vars, from, duration, delay, at, stagger, ease, repeat, yoyo, repeatDelay}]' },
|
|
8896
|
+
defaults: { type: 'object', description: 'For timeline: {ease, duration} for tweens that give none' },
|
|
8897
|
+
labels: { type: 'object', description: 'For timeline: {name: seconds}, for at: "name" or "name+=0.5"' },
|
|
8824
8898
|
},
|
|
8825
8899
|
required: ['type'],
|
|
8900
|
+
// Open, as the zod schema is (.passthrough()): a create op takes its
|
|
8901
|
+
// properties flat (content, fontSize, x, y …) and a keyframe op takes
|
|
8902
|
+
// timeOffset / timeUnits / clipInPoint / clipOutPoint at the top.
|
|
8903
|
+
// create_item's own check still names a property the studio ignores.
|
|
8904
|
+
additionalProperties: true,
|
|
8826
8905
|
},
|
|
8827
8906
|
description: 'Array of operations to execute in order',
|
|
8828
8907
|
},
|
|
@@ -9507,6 +9586,8 @@ USE WHEN: You need full parameter docs, examples, or workflow guidance — espec
|
|
|
9507
9586
|
|
|
9508
9587
|
PREFER RESOURCES WHERE POSSIBLE: The full AI Agent Guide is also available via the MCP resources API at pinepaper://docs/agent-guide — clients that support resources should pull it that way rather than calling this tool. Per-domain references live at pinepaper://docs/{generators,relations,masks,diagrams,maps,effects-and-filters,fonts,custom-paths,paperjs-in-pinepaper,templates,customization,getting-started}. Use this tool when the client doesn't support resources or when you want a specific tool's verbose description.
|
|
9509
9588
|
|
|
9589
|
+
THE AGENT LANE: for a scene built from shapes, text, keyframes and relations and exported to a file, a five-tool lane carries the whole contract in its descriptions (no guide, no lessons file): start the server with PINEPAPER_TOOLKIT=lane, or pinepaper_set_toolkit {toolkit: "lane"}.
|
|
9590
|
+
|
|
9510
9591
|
MODES:
|
|
9511
9592
|
- No args → returns the full AI Agent Guide (same content as pinepaper://docs/agent-guide)
|
|
9512
9593
|
- tool: "pinepaper_agent_batch_execute" → returns that tool's full verbose description
|
|
@@ -9553,6 +9634,7 @@ PROFILES:
|
|
|
9553
9634
|
- map: Map/choropleth tools
|
|
9554
9635
|
- font: Font creation tools
|
|
9555
9636
|
- minimal: Bare essentials
|
|
9637
|
+
- lane: the agent lane — five tools (batch_execute, keyframe_animate, pattern, agent_export, lint_scene) whose descriptions carry everything needed to build and export a shape/text/keyframe scene; set it for a scripted build that needs nothing else. It lists no way back: set it last.
|
|
9556
9638
|
|
|
9557
9639
|
VERBOSITY:
|
|
9558
9640
|
- verbose: Full descriptions
|
|
@@ -9563,8 +9645,8 @@ VERBOSITY:
|
|
|
9563
9645
|
properties: {
|
|
9564
9646
|
toolkit: {
|
|
9565
9647
|
type: 'string',
|
|
9566
|
-
description: 'Toolkit profile: full, agent, diagram, map, font, minimal',
|
|
9567
|
-
enum: ['full', 'agent', 'diagram', 'map', 'font', 'minimal'],
|
|
9648
|
+
description: 'Toolkit profile: full, agent, diagram, map, font, minimal, lane',
|
|
9649
|
+
enum: ['full', 'agent', 'diagram', 'map', 'font', 'minimal', 'lane'],
|
|
9568
9650
|
},
|
|
9569
9651
|
verbosity: {
|
|
9570
9652
|
type: 'string',
|