# io.github.VicThor-wpp/mograph-mcp (pypi · mograph-mcp)

Drive Adobe Illustrator and After Effects, and move artwork between them as editable shape layers.

- Trust score: 69/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-17

## Components

- pypi · `mograph-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp.md), [page](https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp)

## Channel facts

- Registry: `pypi`
- Package: `mograph-mcp`
- Version: `0.6.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-17.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it.
  - 2 of 32 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 2 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 83/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 7043 tokens (~62/item across 113 items; 112 tools + 1 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (5% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add victhor-wpp-mograph-mcp -- uvx mograph-mcp
```

### Codex

```bash
codex mcp add victhor-wpp-mograph-mcp -- uvx mograph-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "victhor-wpp-mograph-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "mograph-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add victhor-wpp-mograph-mcp --command uvx --arg mograph-mcp
```

### Hermes

```yaml
mcp_servers:
  victhor-wpp-mograph-mcp:
    command: "uvx"
    args: ["mograph-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "victhor-wpp-mograph-mcp": {
      "command": "uvx",
      "args": [
        "mograph-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-16 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-14 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-13 (score 67, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-08-12 (score 52, −14)

- [security regression] Malware scan: pass → unverified

### 2026-08-11 (score 66, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-08-10 (score 63, +15)

- [security improvement] Malware scan: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] Package version: 0.5.2 → 0.6.2

### 2026-08-09 (score 48)

First indexed and scored.

## MCP tools (112)

### `ai_status` (~19 tokens)

Illustrator status

Report Illustrator connection status, version, and document count.

### `ai_new_document` (~44 tokens)

New Illustrator document

Create a new Illustrator document.

Input parameters:

- `color_space` (string)
- `height` (number)
- `name` (string)
- `width` (number)

### `ai_open_document` (~34 tokens)

Open Illustrator file

Open an existing Illustrator file (.ai / .pdf / .psd / .svg).

Input parameters:

- `path` (string, required)

### `ai_save_document` (~40 tokens)

Save Illustrator document (saveAs rebinds)

Save the active Illustrator document.

Full notes: docs://tools/ai_save_document

Input parameters:

- `ai_compatible` (boolean)
- `path`

### `ai_close_document` (~22 tokens)

Close Illustrator document

Close the active Illustrator document.

Input parameters:

- `save` (boolean)

### `ai_export` (~58 tokens)

Export document to PNG/SVG/PDF/JPG

Export the active Illustrator document to PNG/SVG/PDF/JPG.

Input parameters:

- `artboard_range`
- `background_alpha` (boolean)
- `format` (string)
- `path` (string, required)
- `scale` (integer)

### `ai_list_layers` (~17 tokens)

List layers

List layers in the active Illustrator document.

### `ai_add_layer` (~26 tokens)

Add a layer

Add a new layer to the active Illustrator document.

Input parameters:

- `name` (string, required)

### `ai_select_layer` (~24 tokens)

Make a layer active

Activate a layer by name in Illustrator.

Input parameters:

- `name` (string, required)

### `ai_get_selection` (~19 tokens)

Describe the current selection

Describe the current Illustrator selection (typename + name).

### `ai_add` (~108 tokens)

Draw a rectangle, ellipse, path or text

Draw a primitive: `kind` is `rect`, `ellipse`, `path` or `text`.

Full notes: docs://tools/ai_add

Input parameters:

- `closed` (boolean)
- `font`
- `height` (number)
- `kind` (string, required)
- `layer`
- `points`
- `size` (number)
- `text`
- `width` (number)
- `x` (number)
- `y` (number)

### `ai_set_style` (~83 tokens)

Paint the selection: fill and stroke

Paint the current selection: fill, stroke, or both in one call.

Colours take '#RRGGBB' or [r,g,b]. These were two tools and were called
together nearly every time, which is the whole test for whether something
should be one.

Input parameters:

- `fill`
- `stroke`
- `stroke_width` (number)

### `ai_run_script` (~47 tokens)

Run arbitrary ExtendScript in Illustrator

Run arbitrary ExtendScript in Illustrator. The code receives (ok, fail, args) and must call ok(data)/fail(msg).

Input parameters:

- `args`
- `code` (string, required)

### `ai_see_document` (~93 tokens)

Render document to PNG and look at it

Render the document and return the image itself, so the artwork can be looked at.

Full notes: docs://tools/ai_see_document

Input parameters:

- `annotate` (boolean)
- `artboard`
- `layer`
- `max_boxes` (integer)
- `max_dim` (integer)
- `min_pixels` (number)
- `path`
- `scale` (integer)

### `ai_inspect_document` (~32 tokens)

Document overview

Overview of the open document: artboards, color space, item counts by type, fonts, linked images.

### `ai_list_artboards` (~27 tokens)

List artboards

List artboards with size and position -- what each After Effects comp needs to match.

### `ai_list_layers_tree` (~40 tokens)

Layer tree

The full layer tree including sublayers, with per-layer item counts.

Input parameters:

- `include_items` (boolean)
- `max_items` (integer)

### `ai_list_items` (~90 tokens)

List items in a layer or group

List page items, filterable by layer and typename (PathItem, GroupItem, TextFrame, PlacedItem...).

Full notes: docs://tools/ai_list_items

Input parameters:

- `container`
- `include_hidden` (boolean)
- `kind`
- `layer`
- `limit` (integer)
- `recursive` (boolean)
- `with_style` (boolean)

Output parameters:

- `data`
- `ok` (boolean)

### `ai_inspect_item` (~31 tokens)

Inspect one item

One item in full detail: bounds, fill, stroke, text, children.

Input parameters:

- `item` (required)

### `ai_audit_for_animation` (~71 tokens)

Audit: what breaks on the way to After Effects

Find what will break or degrade when this artwork is pushed to After Effects.

Triage step for a delivered file: mesh gradients, plugin objects, patterns,
broken links, missing fonts, clipping masks, locked/hidden content, generic
names, off-artboard junk, CMYK, path count.

### `ai_audit_structure` (~61 tokens)

Audit: do the groups match what the eye reads

Audit one frame's STRUCTURE with motion eyes: where does the hierarchy lie?

Full notes: docs://tools/ai_audit_structure

Input parameters:

- `artboard` (integer, required)
- `limit` (integer)
- `max_depth` (integer)

### `ai_set_layer` (~46 tokens)

Set layer name, visibility, lock or opacity

Rename a layer or change its visibility, lock or opacity.

Input parameters:

- `layer` (required)
- `locked`
- `name`
- `opacity`
- `visible`

### `ai_set_item` (~55 tokens)

Set item properties

Rename an item or change its visibility, lock, opacity or blend mode.

Input parameters:

- `blend_mode`
- `hidden`
- `item` (required)
- `locked`
- `name`
- `opacity`

### `ai_rename_items` (~71 tokens)

Rename items

Rename many items at once: [{"item": "2/0/5", "name": "cabeza"}, ...].

Item names become the shape layer names in After Effects, so this is what
turns an unreadable timeline into a usable one.

Input parameters:

- `renames` (array, required)

### `ai_delete` (~65 tokens)

Delete items, empty layers, off-artboard art or a layer

Delete things: `what` is `items`, `empty_layers`, `off_artboard` or `layer`.

Full notes: docs://tools/ai_delete

Input parameters:

- `items`
- `layer`
- `move_items_to`
- `what` (string, required)

### `ai_convert_color_space` (~33 tokens)

Convert colour space

Convert the document color space. 'rgb' is what After Effects works in.

Input parameters:

- `space` (string)

### `ai_select` (~91 tokens)

Select items

Select items by artboard, layer, type, name or explicit list. Filters combine with AND.

Full notes: docs://tools/ai_select

Input parameters:

- `add_to_selection` (boolean)
- `all_items` (boolean)
- `artboard`
- `artboard_mode` (string)
- `items`
- `kind`
- `layer`
- `name_contains`

### `ai_artboard_items` (~92 tokens)

Items whose centre falls on an artboard

List the items that belong to one artboard, with their ids.

\`mode`: 'center' (the item's middle is on the board -- the useful default on
a storyboard), 'contained' (entirely inside), 'intersect' (merely touches).

Input parameters:

- `artboard` (integer, required)
- `layer`
- `limit` (integer)
- `mode` (string)

Output parameters:

- `data`
- `ok` (boolean)

### `ai_frame_tree` (~58 tokens)

Full item tree of a storyboard frame

Everything on one artboard WITH its hierarchy, in artboard-local coordinates.

Full notes: docs://tools/ai_frame_tree

Input parameters:

- `artboard` (integer, required)
- `limit` (integer)
- `max_depth` (integer)

Output parameters:

- `data`
- `ok` (boolean)

### `ai_diff_frames` (~82 tokens)

What changed between two frames

What changed between two frames of a storyboard -- which is the animation.

Full notes: docs://tools/ai_diff_frames

Input parameters:

- `artboard_a` (integer, required)
- `artboard_b` (integer, required)
- `detail` (boolean)
- `max_depth` (integer)
- `threshold` (number)
- `tree_depth` (integer)

Output parameters:

- `data`
- `ok` (boolean)

### `ai_track_frames` (~82 tokens)

Chain element matches across frames

Follow every element across a run of frames: the motion plan as one object.

Full notes: docs://tools/ai_track_frames

Input parameters:

- `first` (integer, required)
- `include_transitions` (boolean)
- `last` (integer, required)
- `max_depth` (integer)
- `threshold` (number)
- `tree_depth` (integer)

### `ai_propagate_names` (~107 tokens)

Carry names across frames along the match chains

Carry the names of ONE named frame to its neighbours, matching by geometry.

Full notes: docs://tools/ai_propagate_names

Input parameters:

- `apply` (boolean)
- `first` (integer, required)
- `last` (integer, required)
- `max_hops` (integer)
- `max_size_ratio` (number)
- `overwrite` (boolean)
- `source` (integer, required)
- `threshold` (number)
- `tree_depth` (integer)

### `ai_layers_from_artboards` (~62 tokens)

One layer per artboard

Give each artboard its own layer and move its artwork into it.

Full notes: docs://tools/ai_layers_from_artboards

Input parameters:

- `mode` (string)
- `name_from_artboard` (boolean)
- `prefix` (string)

### `ai_contact_sheet` (~72 tokens)

Contact sheet of every artboard

Render every artboard small and tile them into one numbered sheet.

Full notes: docs://tools/ai_contact_sheet

Input parameters:

- `cols` (integer)
- `first` (integer)
- `last`
- `max_dim` (integer)
- `path`
- `scale` (number)

### `ai_deselect` (~14 tokens)

Clear the selection

Clear the Illustrator selection.

### `ai_move_to_layer` (~37 tokens)

Move items to a layer

Move items into a layer, creating it if it doesn't exist.

Input parameters:

- `items` (array, required)
- `layer` (string, required)

### `ai_release_to_layers` (~71 tokens)

Release a group to layers

Put each top-level item of a layer onto its own layer.

The prep step before animating: one item per layer becomes one shape layer
per element in After Effects instead of everything fused into one group.

Input parameters:

- `layer` (required)
- `prefix`
- `use_item_names` (boolean)

### `ai_audit_assets` (~39 tokens)

Audit: what the document's panels carry

What the document carries in its panels -- swatches, symbols, styles, images.

Full notes: docs://tools/ai_audit_assets

### `ai_optimize` (~109 tokens)

Get a delivered file ready to produce from

Get a delivered file into a state you can actually produce from, in one call.

Runs the passes that are deterministic and reports the ones that need a
judgement call. **Proposes by default** -- `apply=False` runs only the reads
and tells you what it would do.

Full notes: docs://tools/ai_optimize

Input parameters:

- `apply` (boolean)
- `artboards_to_layers` (boolean)
- `audit_frames`
- `checkpoint` (boolean)

### `ai_prepare` (~59 tokens)

Run the preparation passes a delivered file needs

Run the preparation passes a delivered file needs, in the right order.

Full notes: docs://tools/ai_prepare

Input parameters:

- `items` (boolean)
- `layers` (boolean)
- `ops`
- `unhide` (boolean)

### `ai_ungroup` (~17 tokens)

Ungroup the selection

Ungroup the selection one level.

### `ai_export_artboards` (~45 tokens)

Export one PNG per artboard

Export every artboard to its own file.

Input parameters:

- `directory` (string, required)
- `format` (string)
- `prefix`
- `scale` (integer)

### `ai_find_items` (~120 tokens)

Find items by name, colour, size or text

Find items by any combination of criteria (AND). Returns their stable ids.

Full notes: docs://tools/ai_find_items

Input parameters:

- `closed`
- `color_tolerance` (integer)
- `fill_rgb`
- `font`
- `generic_names_only` (boolean)
- `kind`
- `layer`
- `limit` (integer)
- `max_area`
- `min_area`
- `name_contains`
- `near`
- `text_contains`
- `within`

### `ai_cluster_items` (~140 tokens)

Propose groupings from geometry

Propose how to group loose items. Read-only: nothing is modified.

This is the answer to a layer with a thousand unnamed objects. Strategies:
proximity (recovers real objects -- pieces of one icon touch each other and
sit far from the next), color, type, size, zorder, row.

Full notes: docs://tools/ai_cluster_items

Input parameters:

- `artboard`
- `container`
- `layer`
- `limit` (integer)
- `max_clusters`
- `min_size` (integer)
- `prefix` (string)
- `strategy` (string)
- `tolerance`

### `ai_apply_clusters` (~50 tokens)

Apply a proposed grouping

Materialise a clustering proposal into layers or groups.

Full notes: docs://tools/ai_apply_clusters

Input parameters:

- `clusters` (array, required)
- `mode` (string)
- `parent_layer`

### `ai_auto_name_items` (~123 tokens)

Name items from their content

Give readable names to unnamed items.

Text names itself from its content, placed images from their file name, and
a GROUP from the biggest piece of text inside it -- a group has no
attributes of its own, and the word is right there in its children.

Full notes: docs://tools/ai_auto_name_items

Input parameters:

- `container`
- `layer`
- `limit` (integer)
- `meaningful_only` (boolean)
- `only_generic` (boolean)
- `prefix` (string)
- `recursive` (boolean)

### `ai_merge_layers` (~37 tokens)

Merge layers

Move the contents of several layers into one and delete the emptied ones.

Input parameters:

- `into` (string, required)
- `layers` (array, required)

### `ai_reorder_layer` (~54 tokens)

Reorder a layer

Move a layer in the stacking order. Give exactly one of to_index (0 = top), before, after.

Input parameters:

- `after`
- `before`
- `layer` (required)
- `to_index`

### `ai_layer_from_selection` (~26 tokens)

New layer from the selection

Move the current selection onto a new layer.

Input parameters:

- `name` (string, required)

### `ai_duplicate_layer` (~28 tokens)

Duplicate a layer

Duplicate a layer with all its contents.

Input parameters:

- `layer` (required)
- `new_name`

### `ai_sort_layers` (~41 tokens)

Sort layers

Reorder top-level layers by 'name' or by 'items' (item count).

Input parameters:

- `by` (string)
- `descending` (boolean)

### `ai_group_items` (~29 tokens)

Group items in place

Group items into a single GroupItem.

Input parameters:

- `items` (array, required)
- `name`

### `ai_ungroup_items` (~38 tokens)

Ungroup items

Release a group's children into its parent, preserving order and nesting.

Input parameters:

- `items` (array, required)
- `recursive` (boolean)

### `ai_analyze_layout` (~98 tokens)

Analyse the layout of an artboard

Measure the composition: visual hierarchy, inferred roles, alignments, margins, weight per quadrant.

Read-only. Turns a picture into numbers you can reason about: which element
dominates and by how much, what lines up with what, where the air is.

Input parameters:

- `artboard` (integer)
- `layer`
- `min_size` (integer)
- `strategy` (string)
- `tolerance` (number)

### `ai_reframe_layout` (~108 tokens)

Plan a reframe (does not apply it)

Propose how the composition moves into another format (e.g. ratio='9:16'). Nothing is modified.

Full notes: docs://tools/ai_reframe_layout

Input parameters:

- `artboard` (integer)
- `cluster_strategy` (string)
- `height`
- `layer`
- `min_size` (integer)
- `ratio`
- `roles`
- `strategy` (string)
- `tolerance` (number)
- `width`

### `ai_apply_layout` (~87 tokens)

Apply a reframe plan

Materialise a reframe proposal from ai_reframe_layout.

By default the artwork is duplicated onto a new artboard beside the
original, one layer per cluster, so both formats live in the same document
and the source is left untouched.

Input parameters:

- `layer_prefix` (string)
- `new_artboard` (boolean)
- `offset`
- `plan` (object, required)

### `ai_checkpoint` (~67 tokens)

Checkpoint document (rebinds to a temp copy)

Save a copy of the document before a restructuring pass.

Illustrator's undo does not reliably survive a script that touches hundreds
of items, so take one of these before anything destructive.

Full notes: docs://tools/ai_checkpoint

Input parameters:

- `label` (string)
- `path`

### `ae_status` (~17 tokens)

After Effects status

Report After Effects install + bridge connection status.

### `ae_new_project` (~16 tokens)

New After Effects project

Create a new After Effects project.

### `ae_open_project` (~25 tokens)

Open an After Effects project

Open an After Effects project (.aep).

Input parameters:

- `path` (string, required)

### `ae_save_project` (~26 tokens)

Save the project

Save the active AE project (SaveAs if path given).

Input parameters:

- `path`

### `ae_get_project_info` (~24 tokens)

Project info

List items (comps, footage) in the active AE project.

### `ae_new_comp` (~49 tokens)

New composition

Create a new composition.

Input parameters:

- `duration` (number)
- `fps` (number)
- `height` (integer)
- `name` (string, required)
- `width` (integer)

### `ae_import_file` (~48 tokens)

Import a file as footage

Import a footage file into the AE project, optionally adding it to a comp.

Input parameters:

- `as_footage` (boolean)
- `comp_name`
- `path` (string, required)

### `ae_add_layer` (~123 tokens)

Add a solid, text, null, adjustment, camera or light

Add a layer to a comp: solid, text, null, adjustment, camera or light.

Full notes: docs://tools/ae_add_layer

Input parameters:

- `center_point`
- `color`
- `comp_name`
- `duration`
- `font`
- `height`
- `intensity`
- `kind` (string, required)
- `light_type` (string)
- `name`
- `position`
- `size` (number)
- `text`
- `width`
- `zoom`

### `ae_add_shape` (~116 tokens)

Add a shape layer

Add a shape layer (rectangle/ellipse/star/custom_path) to a comp.

Full notes: docs://tools/ae_add_shape

Input parameters:

- `closed` (boolean)
- `comp_name`
- `fill`
- `gradient`
- `in_tangents`
- `name`
- `out_tangents`
- `position`
- `shape_type` (string)
- `size`
- `stroke`
- `stroke_width` (number)
- `vertices`

### `ae_effect` (~145 tokens)

Apply, remove, list, tune or copy effects

Apply an effect to a layer, remove it, list what is on there, set one of
its parameters, or copy the whole stack onto other layers.

\`op` is `apply`, `remove`, `list`, `set_property` or `copy`. All five share
\`(layer, effect, comp_name)`, which is why they are one tool.

Full notes: docs://tools/ae_effect

Input parameters:

- `comp_name`
- `effect`
- `from_comp`
- `layer`
- `op` (string, required)
- `property`
- `replace` (boolean)
- `to_layers`
- `value`

### `ae_keyframes` (~138 tokens)

Set, read, delete or shift keyframes

Put keyframes on a property, read them, delete them or shift them in time.

\`op` is `set`, `get`, `delete` or `offset`. `property_path` may nest, so
effect properties work too: 'Effects/Gaussian Blur/Blurriness'.

Full notes: docs://tools/ae_keyframes

Input parameters:

- `comp_name`
- `delta`
- `ease`
- `keys`
- `layer` (required)
- `op` (string, required)
- `property_path` (string, required)
- `replace` (boolean)
- `times`
- `values`

### `ae_keyframe_easing` (~81 tokens)

Ease and interpolate existing keyframes

Shape the keyframes a property already has: easing, interpolation, or both.

Full notes: docs://tools/ae_keyframe_easing

Input parameters:

- `comp_name`
- `ease`
- `influence` (number)
- `interpolation`
- `keys`
- `layer` (required)
- `property_path` (string, required)

### `ae_render_queue` (~100 tokens)

Add to the render queue and render

Work the render queue: `op` is `add`, `list` or `clear`.

One entity, three verbs. `add` with `start_queue=True` also renders, and
After Effects is blocked for the whole of it.

Input parameters:

- `comp_name`
- `op` (string)
- `output_path`
- `render_settings` (string)
- `start_queue` (boolean)
- `template` (string)

### `ae_aerender` (~77 tokens)

Render from the command line (aerender)

Render a comp headlessly via aerender.exe (does not block the AE UI).

Full notes: docs://tools/ae_aerender

Input parameters:

- `comp_name` (string, required)
- `output_path` (string, required)
- `render_settings` (string)
- `template` (string)
- `wait` (boolean)

### `ae_render_status` (~48 tokens)

How a background render is going

How a `wait=False` render is going, or all of them.

Full notes: docs://tools/ae_render_status

Input parameters:

- `cancel` (boolean)
- `render_id`

### `ae_run_script` (~38 tokens)

Run arbitrary ExtendScript in After Effects

Run arbitrary ExtendScript in After Effects. Code receives (ok, fail, payload).

Input parameters:

- `args`
- `code` (string, required)

### `ae_list_layers` (~76 tokens)

List layers in a comp

List a comp's layers with type, source, timing, parenting, effects and what's animated.

Full notes: docs://tools/ae_list_layers

Input parameters:

- `at_time`
- `comp_name`
- `include_animation` (boolean)
- `include_effects` (boolean)
- `include_transform` (boolean)

Output parameters:

- `data`
- `ok` (boolean)

### `ae_inspect_layer` (~40 tokens)

Inspect one layer

Full detail of one layer: transform values, keyframes, expressions, effect parameters, masks.

Input parameters:

- `comp_name`
- `layer` (required)

### `ae_get_selection` (~25 tokens)

Describe the selected layers

What the user currently has selected in AE (layers, properties, project items).

### `ae_find_usage` (~31 tokens)

Where is this item used

Find every comp/layer where a project item is used. Check this before deleting.

Input parameters:

- `item` (required)

### `ae_audit_project` (~37 tokens)

Health of the project: unused, missing, broken

The health of the project: unused items, missing footage, broken expressions.

Full notes: docs://tools/ae_audit_project

### `ae_delete_layer` (~48 tokens)

Delete layers

Delete a layer from a comp, or a whole list of them in one pass.

Full notes: docs://tools/ae_delete_layer

Input parameters:

- `comp_name`
- `layer` (required)

### `ae_delete_item` (~37 tokens)

Delete a project item

Delete a project item. Refuses if it's still used somewhere unless force=True.

Input parameters:

- `force` (boolean)
- `item` (required)

### `ae_remove_unused_footage` (~22 tokens)

Remove unused footage

Run AE's 'Remove Unused Footage'.

### `ae_consolidate_footage` (~30 tokens)

Consolidate duplicate footage

Run AE's 'Consolidate All Footage' (merge duplicate footage items).

### `ae_reduce_project` (~32 tokens)

Reduce project to the given comps

Run AE's 'Reduce Project': strip everything the named comps don't need.

Input parameters:

- `comp_names` (array, required)

### `ae_set_layer` (~178 tokens)

Set layer properties

Change a layer's properties. Only the arguments you pass are modified.

\`parent` takes a layer name/index, or "" to unparent. `blend_mode` is a
BlendingMode key such as 'SCREEN', 'MULTIPLY', 'ADD', 'NORMAL'.

Full notes: docs://tools/ae_set_layer

Input parameters:

- `anchor_point`
- `blend_mode`
- `comp_name`
- `enabled`
- `in_point`
- `layer` (required)
- `locked`
- `name`
- `opacity`
- `out_point`
- `parent`
- `position`
- `rotation`
- `scale`
- `shy`
- `solo`
- `start_time`
- `three_d`
- `updates`

### `ae_duplicate_layer` (~36 tokens)

Duplicate a layer

Duplicate a layer, optionally renaming the copy.

Input parameters:

- `comp_name`
- `layer` (required)
- `new_name`

### `ae_precompose` (~47 tokens)

Precompose layers

Precompose the given layers into a new comp.

Input parameters:

- `comp_name`
- `layers` (array, required)
- `move_attributes` (boolean)
- `name` (string, required)

### `ae_set_expression` (~59 tokens)

Set an expression on a property

Set a property's expression (pass an empty string to clear it).

Full notes: docs://tools/ae_set_expression

Input parameters:

- `comp_name`
- `expression` (string, required)
- `layer` (required)
- `property_path` (string, required)

### `ae_create_folder` (~29 tokens)

Create a project folder

Create a folder in the project panel.

Input parameters:

- `name` (string, required)
- `parent`

### `ae_move_to_folder` (~31 tokens)

Move items to a folder

Move project items into a folder.

Input parameters:

- `folder` (string, required)
- `items` (array, required)

### `ae_list_available_effects` (~40 tokens)

List the effects this install has

List every effect installed in AE with its matchName. Use `filter` to search (e.g. 'blur').

Input parameters:

- `filter`

### `ae_apply_preset` (~40 tokens)

Apply an .ffx preset

Apply an .ffx animation preset to a layer.

Input parameters:

- `comp_name`
- `layer` (required)
- `preset_path` (string, required)

### `ae_set_text` (~69 tokens)

Set a text layer's content and style

Edit an existing text layer. Only the arguments you pass are changed.

Input parameters:

- `color`
- `comp_name`
- `font`
- `justification`
- `layer` (required)
- `leading`
- `size`
- `text`
- `tracking`

### `ae_add_item` (~102 tokens)

Add a project item to a comp as a layer

Put a project item -- another COMP, or a footage item -- into a comp as a layer.

This is how a film gets assembled: each scene is its own comp, and a master
comp holds them one after another with the transitions at the seams.

Full notes: docs://tools/ae_add_item

Input parameters:

- `comp_name`
- `item` (required)
- `name`
- `start_time` (number)
- `to_index`

### `ae_set_comp` (~78 tokens)

Set composition settings

Change a comp's settings (rename, size, duration, frame rate, work area).

Input parameters:

- `bg_color`
- `comp_name`
- `duration`
- `fps`
- `height`
- `name`
- `width`
- `work_area_duration`
- `work_area_start`

### `ae_duplicate_comp` (~27 tokens)

Duplicate a composition

Duplicate a composition.

Input parameters:

- `comp_name` (string, required)
- `new_name`

### `ae_markers` (~72 tokens)

Read or add markers

Read or add markers, on a comp or on a layer. `op` is `get` or `add`.

Input parameters:

- `comment` (string)
- `comp_name`
- `duration` (number)
- `layer`
- `op` (string)
- `time` (number)

### `ae_replace_source` (~54 tokens)

Replace a layer's source

Point a layer at a different footage item or comp, keeping its transform, keyframes and effects.

Input parameters:

- `comp_name`
- `item` (required)
- `keep_effects` (boolean)
- `layer` (required)

### `ae_set_track_matte` (~63 tokens)

Set a track matte

Set a layer's track matte: alpha, alpha_inverted, luma, luma_inverted, or none to remove it.

Input parameters:

- `comp_name`
- `layer` (required)
- `matte_layer`
- `matte_type` (string)

### `ae_reorder_layer` (~60 tokens)

Reorder a layer

Move a layer in the stacking order. Give exactly one of to_index (1 = top), before, after.

Input parameters:

- `after`
- `before`
- `comp_name`
- `layer` (required)
- `to_index`

### `ae_split_layer` (~37 tokens)

Split a layer at a time

Split a layer in two at the given time.

Input parameters:

- `comp_name`
- `layer` (required)
- `time` (number, required)

### `ae_interpret_footage` (~58 tokens)

Set footage interpretation

Change how AE interprets a footage item: conform frame rate, loop count, alpha mode.

Input parameters:

- `alpha`
- `fps`
- `item` (required)
- `loop`
- `premul_color`

### `ae_import_folder` (~45 tokens)

Import a folder as footage

Import every file in a directory in one round-trip, optionally into its own project folder.

Input parameters:

- `extensions`
- `folder_name`
- `path` (string, required)

### `ae_copy_animation` (~61 tokens)

Copy animation between layers

Copy one property's keyframes (easing included) from one layer onto others.

Input parameters:

- `comp_name`
- `from_layer` (required)
- `property_path` (string, required)
- `time_offset` (number)
- `to_layers` (array, required)

### `ae_add_mask` (~86 tokens)

Add a mask to a layer

Add a mask to a layer from [x, y] vertices in layer space.

Input parameters:

- `closed` (boolean)
- `comp_name`
- `in_tangents`
- `inverted` (boolean)
- `layer` (required)
- `mode` (string)
- `name`
- `out_tangents`
- `vertices` (array, required)

### `ae_list_fonts` (~37 tokens)

List available fonts

List the fonts AE can use, by PostScript name. Check here before setting a font on a text layer.

Input parameters:

- `filter`

### `ae_see_frame` (~94 tokens)

Render a frame to PNG and look at it

Render one frame of a comp and return the image, so the result can be looked at.

Comes back inline, shrunk to `max_dim` on its long side; the file path is in
the reply too, and `max_dim=0` sends the path alone.

Input parameters:

- `comp_name`
- `max_dim` (integer)
- `path`
- `time` (number)

### `ae_stagger` (~107 tokens)

Stagger the same animation across layers

Give N layers the same animation with a progressive offset.

Full notes: docs://tools/ae_stagger

Input parameters:

- `at_time`
- `comp_name`
- `delay` (number)
- `ease`
- `from_layer`
- `influence` (number)
- `layers` (array, required)
- `order` (string)
- `origin`
- `property_path` (string, required)
- `reverse` (boolean)
- `total`

### `ae_animate` (~165 tokens)

Animate layers in or out with real timing

Bring elements in (or take them out) with anticipation, overshoot and settle.

Full notes: docs://tools/ae_animate

Input parameters:

- `anticipation` (number)
- `at` (number)
- `at_time`
- `comp_name`
- `delay` (number)
- `distance` (number)
- `duration` (number)
- `ease`
- `influence` (number)
- `layers` (array, required)
- `order` (string)
- `origin`
- `overshoot` (number)
- `phase` (string)
- `replace` (boolean)
- `reverse` (boolean)
- `set_in_point` (boolean)
- `squash`
- `style` (string)

### `ae_set_anchors` (~61 tokens)

Move anchor points without moving the layer

Move layers' anchor points to a meaningful pivot, without moving the layer.

Full notes: docs://tools/ae_set_anchors

Input parameters:

- `anchor` (string)
- `at_time`
- `comp_name`
- `layers`

### `ai_to_ae_push` (~115 tokens)

Push the Illustrator selection to After Effects

Transfer the current Illustrator selection into After Effects as editable shape layers.

Requires a document open in Illustrator with path/text items selected. The
AE bridge panel must be connected (see ae_status).

Full notes: docs://tools/ai_to_ae_push

Input parameters:

- `anchor` (string)
- `comp_name`
- `name_prefix` (string)
- `rebuild_groups` (boolean)
- `skip_roles`
- `text_as_shapes` (boolean)
- `use_item_names` (boolean)

Output parameters:

- `anchors`
- `artboard`
- `comp`
- `comp_size`
- `degraded`
- `hierarchy`
- `layers`
- `left_out`
- `note`
- `ok` (boolean)
- `pushed` (integer)
- `skipped`

### `ai_to_ae_verify` (~99 tokens)

Compare an AE comp against the artboard it came from

Compare an After Effects comp against the Illustrator artboard it came from.

Full notes: docs://tools/ai_to_ae_verify

Input parameters:

- `artboard` (integer, required)
- `comp_name` (string, required)
- `grid_cols` (integer)
- `grid_rows` (integer)
- `hot_threshold` (number)
- `out_path`
- `time` (number)
- `top_regions` (integer)

### `dev_reload` (~80 tokens)

Reload the backends without restarting the client

Reload the backend code in place, without restarting the MCP client.

Debugging against real Adobe apps is a tight loop -- push, see it come out
wrong, fix, retry -- and restarting the client for a one-line change costs a
minute and a panel reconnection every time.

Full notes: docs://tools/dev_reload

Input parameters:

- `modules`

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp#diagnostics

## Score history

- 2026-08-17: 69
- 2026-08-16: 69
- 2026-08-15: 68
- 2026-08-14: 68
- 2026-08-13: 67
- 2026-08-12: 52
- 2026-08-11: 66
- 2026-08-10: 63
- 2026-08-09: 48

## Links

- PyPI project: https://pypi.org/project/mograph-mcp/
- Socket report: https://socket.dev/pypi/package/mograph-mcp
- Repository: https://gitlab.com/vic-lab/mograph-mcp
- Changelog RSS feed: https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp.json
- HTML version of this page: https://verifymcp.io/servers/victhor-wpp-mograph-mcp/mograph-mcp
