Motion by Frapea
REMOTE · MOTION.FRAPEA.COM
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Available components
Last scanned (12 hours ago)
Scores higher than 57% of remote servers
Reachable. Last reached 23 Oct 2026.
Category Design and Media
Recent critical change
Authorization (22 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (close_composition). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2415 tokens (~120/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
- Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage87
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 60% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +1
- Authorization: unverified → fail ▼ critical
- The server rewrote its instructions, which are the text every model session reads security
- New tool “delete_media”, which the server declares destructive security
- Tool “check_playback” rewrote its description, which is the text the model reads security
- Tool “close_composition” rewrote its description, which is the text the model reads security
- Tool “connect” rewrote its description, which is the text the model reads security
- Tool “create_composition” rewrote its description, which is the text the model reads security
- Tool “create_session” rewrote its description, which is the text the model reads security
- Tool “get_composition” rewrote its description, which is the text the model reads security
- Tool “get_media” rewrote its description, which is the text the model reads security
- Tool “get_problems” rewrote its description, which is the text the model reads security
- Tool “inspect_composition” rewrote its description, which is the text the model reads security
- Tool “inspect_media” rewrote its description, which is the text the model reads security
- Tool “list_compositions” rewrote its description, which is the text the model reads security
- Tool “list_media” rewrote its description, which is the text the model reads security
- Tool “organize_media” rewrote its description, which is the text the model reads security
- Tool “put_media” rewrote its description, which is the text the model reads security
- Tool “read_skill” rewrote its description, which is the text the model reads security
- Tool “set_props” rewrote its description, which is the text the model reads security
- Tool “tell_user” rewrote its description, which is the text the model reads security
- Tool “update_composition” rewrote its description, which is the text the model reads security
- Tool “wait_for_tab” rewrote its description, which is the text the model reads security
- Tool “close_composition” is now declared destructive security
- Tool “set_props” is now declared destructive security
- Tool “update_composition” is now declared destructive security
- Schema quality: 149 → 120 ▲ functional
- Destructive annotations: pass → 100 functional
- Tool “check_playback” changed its title: Check playback cosmetic
- Tool “close_composition” changed its title: Close composition cosmetic
- Tool “connect” changed its title: Connect to a Motion tab cosmetic
- Tool “create_composition” changed its title: Create composition cosmetic
- Tool “create_session” changed its title: Start a session without a tab cosmetic
- Tool “get_composition” changed its title: Get composition cosmetic
- Tool “get_media” changed its title: Get media bytes cosmetic
- Tool “get_problems” changed its title: Get problems cosmetic
- Tool “inspect_composition” changed its title: Render frames cosmetic
- Tool “inspect_media” changed its title: Inspect media cosmetic
- Tool “list_compositions” changed its title: List compositions cosmetic
- Tool “list_media” changed its title: List media cosmetic
- Tool “organize_media” changed its title: Organize media folders cosmetic
- Tool “put_media” changed its title: Add media from a URL cosmetic
- Tool “read_skill” changed its title: Read a Motion guide cosmetic
- Tool “set_props” changed its title: Set composition props cosmetic
- Tool “tell_user” changed its title: Show a status line cosmetic
- Tool “update_composition” changed its title: Update composition cosmetic
- Tool “wait_for_tab” changed its title: Wait for the Motion tab cosmetic
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 12 Oct 26 62
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Probed https://motion.frapea.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=frapea.com | CN=WE1,O=Google Trust Services,C=US | 8 Oct 2026 | 6 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | cd47157a9da73d0b0ed9d9ccb3522385 |
| SANs: frapea.com, motion.frapea.com, *.motion.frapea.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of motion.frapea.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| frapea.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=15552000; includeSubDomains |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://motion.frapea.com/mcp | Verified | 200 | |
| http (plaintext) | http://motion.frapea.com/mcp | HTTPS enforced | 301 | https://motion.frapea.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_playback Check playback ~189
Plays a composition on the user's stage from the first frame to the last, through the same preview a person watches (which inspect_composition does not use), and reports whether it got to the end. Buffering is allowed; any error ends the run. Answers within about 20 s: {status:"running", at, total} means call again with the same id to keep waiting on the same run. Then {status:"done", verdict:"ok"|"problems", problems, warnings} or {status:"incomplete", reason} (tab hidden, interrupted, edited). It takes over the stage while it runs: the composition under test becomes the one on screen and the preview plays from frame 0. The composition's source and props are not changed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Omit for the active one. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
close_composition Close composition ~75
Closes a composition and removes it from the user's tabs; its source is not kept. Meant for drafts made along the way. Needs an explicit id and never falls back to the active composition.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The composition to close. Required. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
connect Connect to a Motion tab ~80
Pairs this agent with a Motion browser tab using the eight-character code the user sees under the Connect MCP button (for example K7M4-P2Q9). Returns a session token that every other tool takes. The code works once; the token is what stays valid.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The eight-character pairing code shown on the Motion page. |
No output schema declared.
No examples provided.
create_composition Create composition ~180
Creates a new composition from TSX source and opens it as a tab in the user's Motion page. `files` maps path to source and must include the entry (default composition.tsx). The API is specific to Motion and documented in read_skill {topic:'motion'}; design guidance is in {topic:'motion-craft'}. A partsBoard prop (default false) can lay out UI-like parts for checking before scenes are built.
| Name | Type | Req | Description |
|---|---|---|---|
| durationInFrames | number | yes | – |
| entry | string | – | Defaults to composition.tsx. |
| files | object | yes | – |
| fps | number | yes | – |
| height | number | yes | – |
| name | string | yes | – |
| schema | object | – | Props schema; drives the editable controls. |
| token | string | yes | The session token that connect returned. |
| width | number | yes | – |
No output schema declared.
No examples provided.
create_session Start a session without a tab ~71
Starts a Motion session when the user has no pairing code. Compositions can be created and edited at once; the returned link opens the session in a browser. Rendering frames, playback and anything touching media need that tab open (see wait_for_tab). The scene is kept for 24 hours after the last change.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
delete_media Delete media ~78
Deletes files from the user's media library by id. A copied file is gone from the browser; a linked file stays on the user's disk and only leaves the library. Compositions that use a deleted file report it as missing footage.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | The files to delete. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
get_composition Get composition ~62
Returns one composition in full: manifest, every source file, and current prop values — the state an update_composition edit applies to.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Omit for the active one. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
get_media Get media bytes ~65
Returns the raw bytes of one file, base64, capped at about 600 KB. For larger files and for video, inspect_media describes the content at a fraction of the size.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
get_problems Get problems ~181
Lists what went wrong in the user's tab: frames that failed to render (with the frame and the engine's message), a preview that stopped moving and why, compositions that would not load, clips that will not decode, missing footage, failed exports, a page the browser killed — plus warnings. Works while the tab is hidden or closed. `current` belongs to the composition as it is now; `earlier` counts problems an edit has since left behind. Other tool results may also carry a `problems` list of what is new. An empty list covers only what the tab has played; check_playback does a full pass.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | Only this composition. Omit for all of them. |
| includeWarnings | boolean | – | Include warnings (default true). |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
inspect_composition Render frames ~201
Renders frames of a composition in the user's tab and returns them as one labelled contact sheet; nothing is saved or changed. atFrames takes up to 12 frames; omitted, the sheet is an even spread plus the joins between scenes (labelled "end of a scene", "start of a scene", "mid transition"). One frame comes back at 1560 px, two at 960, for checking detail. `props` are merged over the composition's for this render only, e.g. {partsBoard:true}. Each frame reports its content share (how much is not background); one far below its neighbours is usually a gap between scenes.
| Name | Type | Req | Description |
|---|---|---|---|
| atFrames | array | – | – |
| id | string | – | Omit for the active one. |
| props | object | – | Merged over the composition's props for this render only, e.g. {partsBoard:true}. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
inspect_media Inspect media ~87
Looks inside an image or video and returns one contact sheet: each requested moment as a labelled cell in a single image. atSec takes up to 12 timestamps in seconds; omitted, the moments are spread evenly over the clip.
| Name | Type | Req | Description |
|---|---|---|---|
| atSec | array | – | Up to 12 timestamps. |
| id | string | yes | – |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
list_compositions List compositions ~37
Lists the compositions open in the session, and which one is on screen.
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
list_media List media ~101
Lists the user's media library: folders, and files with id, name, kind, size and folder. `storage` says whether a file is 'linked' (still on their disk) or 'copied' (held by the browser); a linked file can need the user to re-grant access after a reload.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | – | Folder to list. Omit for all. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
organize_media Organize media folders ~117
Moves files and manages folders. action: 'move' (ids + toFolder), 'createFolder' (name + optional parent), 'deleteFolder' (folder; the files inside move up one level, nothing is deleted). Deleting files is delete_media.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| folder | string | – | – |
| ids | array | – | – |
| name | string | – | – |
| parent | string | – | – |
| toFolder | string | – | – |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
put_media Add media from a URL ~182
Adds a file to the library as a new item; nothing existing is replaced. With `url`, the user's browser fetches it, so only public https hosts that send CORS headers work. `data` takes base64 bytes and is limited to about 700 KB, for small generated assets. Larger files on the caller's disk can be sent as an HTTP POST of the raw bytes to /media/upload?token=TOKEN&name=NAME on this server's origin (up to 10 MB).
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | – | Base64 bytes, for small assets. |
| folder | string | – | Folder to put it in. Omit for the root. |
| name | string | yes | Filename, including extension. |
| token | string | yes | The session token that connect returned. |
| url | string | – | http(s) URL for the browser to fetch. |
No output schema declared.
No examples provided.
read_skill Read a Motion guide ~126
Returns one of Motion's authoring guides as text. 'motion' is the API contract: what compiles, resolves and renders — compositions written without it usually fail. 'motion-craft' covers timing and design so results do not look generated; 'motion-text' typography; 'motion-effects' named looks; 'motion-transitions' sequencing scenes; 'motion-examples' two contrasting complete pieces; 'motion-workflow' working while the user watches and checking frames; 'motion-review' a structured critique for pieces with an audience and a purpose.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | yes | – |
No output schema declared.
No examples provided.
set_props Set composition props ~62
Sets prop values on a composition, the same values the user's controls change. Merged by key; keys sent replace their current values.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| props | object | yes | – |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
tell_user Show a status line ~199
Shows one short status sentence in the user's Motion tab while work is in progress, so they can tell progress from a stall. kind 'done' marks the job finished and 'problem' marks a blocker; step and of draw a progress bar. Changes nothing else. How it fits the workflow: read_skill {topic:'motion-workflow'}.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Omit while working. 'done' ends the job, 'problem' flags a blocker. |
| of | number | – | How many there are in total, e.g. 5 — draws a progress bar. Send both or neither, and only when you genuinely know the total; a bar that goes backwards is worse than none. |
| step | number | – | Which one you are on, e.g. 2. |
| text | string | yes | One friendly sentence, first person. Not a log line. |
| token | string | yes | The session token that connect returned. |
No output schema declared.
No examples provided.
update_composition Update composition ~121
Edits an existing composition. Each file sent replaces the file at that path; files not sent are kept. Changing the schema keeps prop values that still have a matching field.
| Name | Type | Req | Description |
|---|---|---|---|
| durationInFrames | number | – | – |
| files | object | – | – |
| fps | number | – | – |
| height | number | – | – |
| id | string | – | Omit for the active one. |
| name | string | – | – |
| schema | object | – | – |
| token | string | yes | The session token that connect returned. |
| width | number | – | – |
No output schema declared.
No examples provided.
wait_for_tab Wait for the Motion tab ~60
Waits until the user's Motion tab connects to the session, for example after they open the link from create_session. Returns as soon as it connects, or after about 25 seconds with tabConnected false. Tools that render or touch media need the tab.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the Motion by Frapea MCP server?
Motion by Frapea is a hosted endpoint at https://motion.frapea.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · motion.frapea.com
claude mcp add --transport http com-frapea-motion 'https://motion.frapea.com/mcp'
What is the Motion by Frapea MCP server?
Motion by Frapea is an MCP server listed in the public MCP registry as com.frapea/motion. One sentence to a finished animation: your AI writes motion graphics as code and checks real frames. This page covers its hosted endpoint (https://motion.frapea.com/mcp).
Is the Motion by Frapea MCP server safe to use?
Motion by Frapea scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Motion by Frapea MCP server expose?
Motion by Frapea exposes 20 tools: close_composition, connect, create_session, wait_for_tab, tell_user, and 15 more. Their descriptions and schemas cost roughly 2,274 tokens of context every time the server is loaded.
Does the Motion by Frapea MCP server require authentication?
No. We connected to Motion by Frapea without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Motion by Frapea MCP server still maintained?
Motion by Frapea is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.