MotionSpec — web animation accessibility MCP
Server Details
Web animation accessibility MCP: GSAP, static CSS checks, prefers-reduced-motion, WCAG 2.2.2/2.3.3.
- Status
- Healthy
- Uptime
- 100.0% over 74 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- MasterPlayspots/motionspec
- GitHub Stars
- 1
- Server Listing
- motionspec
TDQS
Scored across 5 tools
On paper the names target distinct actions (audit, catalog, compile, stats, validate), but three of them — motion_audit, motion_compile, motion_stats — return the identical PAYWALL payload with unused arguments when unauthenticated. An agent cannot distinguish their real behavior without a key, so selection collapses to guesswork among interchangeable stubs.
All five tools use a uniform motion_<verb> pattern (audit, catalog, compile, stats, validate). The convention is predictable and readable, with no mixing of casing or verb styles.
Five tools is a sensible scope for a spec-authoring workflow (catalog, validate, compile, audit, stats). The count itself is fine; the problem is that most of these tools are non-functional rather than that there are too many or too few.
The natural lifecycle is catalog → write spec → validate → compile → audit, but only motion_catalog and motion_validate actually execute; compile, audit, and stats dead-end in a paywall on the hosted endpoint. An agent can get a validated spec but cannot complete the core compile/audit workflow through this surface, a significant gap.
Available Tools
5 toolsmotion_auditAudit a live URL for motion accessibility (WCAG 2.2.2 / 2.3.3)ARead-onlyInspect
Requires a Dev Key ($39/mo) or Agency plan ($249/mo) on the hosted endpoint (motionspec.dev/pricing?src=mcp). This unauthenticated call returns access information only; it does not compile code, fetch URLs, run an audit or read usage data. Arguments are optional and unused. Returns isError:true with structuredContent {ok:false, error:'PAYWALL', tool, upgrade} and text guidance. To use motion_audit on the hosted endpoint, connect with an x-motionspec-key header. Run the static URL audit locally for free with 'npx -p motionspec motion audit --json' (MIT).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The page URL to audit (http/https). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint true, openWorldHint false), the description discloses the paid-plan requirement, the exact failure payload (isError:true, structuredContent {ok:false, error:'PAYWALL', tool, upgrade}), and that arguments are optional and unused. That is unusually rich behavioral context an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paywall/auth constraint is front-loaded and the sentences are dense but purposeful, covering behavior, return shape, and the local alternative. The negative enumeration is slightly padded, keeping it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description fully specifies the return payload, the auth prerequisite, and the fallback path. Nothing an agent needs to call this correctly or interpret its failure is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real meaning by stating 'Arguments are optional and unused' — clarifying that the documented url parameter is effectively ignored. It stops short of 5 because this note somewhat conflicts with the schema's own claim that url is 'The page URL to audit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's real behavior: 'This unauthenticated call returns access information only; it does not compile code, fetch URLs, run an audit or read usage data.' That negative enumeration also distinguishes it from siblings like motion_compile and motion_validate. It loses a point because the name/title promise an audit while the description says no audit occurs, which is an unusual and potentially confusing framing rather than a clean verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear preconditions (Dev Key or Agency plan, x-motionspec-key header) and an explicit free alternative ('npx -p motionspec motion audit <url> --json'). It does not, however, explain when to prefer this tool over the sibling tools, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_catalogMotionSpec catalog & authoring rulesARead-onlyInspect
Returns the catalog of verified motion primitives (names, purpose, parameter schemas, defaults) plus the authoring rules for writing a MotionSpec. Call this FIRST, then write the spec yourself and validate it with motion_validate (motion_compile runs in the CLI or with a key on the hosted endpoint). Free motion check: motionspec.dev/motion-check · keys for the hosted endpoint: motionspec.dev/pricing?src=mcp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it is a bootstrap/discovery call that returns definitions rather than performing work, and it discloses that motion_compile requires the CLI or a hosted key.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is returned, then the call order, then the compile caveat. The trailing promotional URLs (motion-check, pricing) are useful pointers but slightly dilute the definition; the substance is still tight and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the return contents (names, purpose, schemas, defaults) and the authoring rules. Combined with the sequencing guidance and the compile auth caveat, an agent has everything needed to use it correctly in the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document and the baseline of 4 applies. The description correctly implies no input is needed to retrieve the catalog.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns) and resource (the catalog of verified motion primitives) and enumerates the payload (names, purpose, parameter schemas, defaults) plus the authoring rules for a MotionSpec. It also implicitly distinguishes itself from siblings by naming motion_validate and motion_compile as downstream steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit sequencing instruction ('Call this FIRST, then write the spec yourself and validate it with motion_validate') and clarifies where motion_compile actually runs (CLI or hosted endpoint with a key). An agent knows both when to call it and which sibling to use next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_compileCompile a MotionSpec to GSAP/CSSARead-onlyInspect
Requires a Dev Key ($39/mo) or Agency plan ($249/mo) on the hosted endpoint (motionspec.dev/pricing?src=mcp). This unauthenticated call returns access information only; it does not compile code, fetch URLs, run an audit or read usage data. Arguments are optional and unused. Returns isError:true with structuredContent {ok:false, error:'PAYWALL', tool, upgrade} and text guidance. To use motion_compile on the hosted endpoint, connect with an x-motionspec-key header. motion_compile runs locally for free with 'npx -p motionspec motion compile <spec.json>' (MIT).
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | The MotionSpec JSON object | |
| specName | No | Optional name used in the artifact header |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing the auth/pricing requirement, the exact failure shape (isError:true with structuredContent {ok:false, error:'PAYWALL', tool, upgrade}), and that arguments are ignored. This is precisely the behavioral context an agent needs to avoid wasted calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the paywall condition and packs the key facts (unused args, error shape, auth header, free local alternative) into a compact block. Slightly dense with the tracking URL and some redundancy around pricing, but every sentence carries actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains the return value (structuredContent error shape plus text guidance) and the auth/free-CLI paths, so an agent has everything needed to call it correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents spec and specName (baseline 3). The description adds meaningful value by stating 'Arguments are optional and unused', telling the agent the parameters have no effect here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the real behavior: 'This unauthenticated call returns access information only; it does not compile code.' That is a specific, honest statement of what the tool does, even though the name/title ('Compile a MotionSpec') misleadingly suggests compilation. It also differentiates from siblings by negating 'fetch URLs, run an audit or read usage data' (routing away from motion_audit/motion_stats).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditions and alternatives: to actually compile on the hosted endpoint, connect with an x-motionspec-key header; otherwise run locally for free via 'npx -p motionspec motion compile <spec.json>'. The when-to-use and the escape hatch are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_statsMotionSpec usage telemetryARead-onlyInspect
Requires a Dev Key ($39/mo) or Agency plan ($249/mo) on the hosted endpoint (motionspec.dev/pricing?src=mcp). This unauthenticated call returns access information only; it does not compile code, fetch URLs, run an audit or read usage data. Arguments are optional and unused. Returns isError:true with structuredContent {ok:false, error:'PAYWALL', tool, upgrade} and text guidance. To use motion_stats on the hosted endpoint, connect with an x-motionspec-key header. Read local telemetry for free with 'npx -p motionspec motion stats' (MIT). This reads this machine's local activity, not hosted usage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering only readOnly/openWorld, the description goes well beyond them: it discloses the paywall precondition, that arguments are ignored, and the exact failure shape (isError:true with structuredContent {ok:false, error:'PAYWALL', tool, upgrade}). This is exactly the kind of behavioral detail an agent needs to avoid misusing the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paywall requirement is stated twice (pricing URL, then again as the x-motionspec-key header), and the negative list 'does not compile code, fetch URLs, run an audit or read usage data' is longer than needed. The information is useful but not tightly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal annotations, the description carries the full burden and does so: auth requirement, argument behavior, error payload, and a free local fallback are all covered. Nothing material is missing for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description reinforces this by stating 'Arguments are optional and unused', which confirms the empty schema is intentional rather than truncated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the actual function plainly: 'This unauthenticated call returns access information only; it does not compile code, fetch URLs, run an audit or read usage data.' That negative framing usefully separates it from siblings motion_audit and motion_compile, but the positive purpose is buried under the paywall preamble rather than stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditions: requires a Dev Key or Agency plan on the hosted endpoint, reached via the x-motionspec-key header, and it names a concrete alternative ('Read local telemetry for free with npx -p motionspec motion stats'). No sibling tool is offered as an alternative for hosted usage data, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
motion_validateValidate a MotionSpec (trust boundary)ARead-onlyInspect
Checks a MotionSpec against the schema, the primitive allow-list, parameter bounds and injection rules. Fail-closed: returns ok=false with precise errors. Returns {ok, errors, warnings, deprecations, catalogVersion}. IMPORTANT: warnings[] carries the WCAG 2.2.2 / reduced-motion findings and can be non-empty while ok=true — a spec that compiles is not automatically accessible. Use to pre-check a spec before compiling.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | The MotionSpec JSON object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint and openWorldHint annotations by disclosing fail-closed behavior, the exact return shape, and the non-obvious fact that warnings can be non-empty while ok=true. It also explains the accessibility implication, which is critical for correct agent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the core validation behavior stated first, followed by the return shape and the critical warning caveat. Every sentence earns its place, and the formatting highlights the most important behavioral nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only validation tool with no output schema, the description fully covers what the tool does, when to use it, what it returns, and the key failure and warning semantics. An agent has sufficient information to select and invoke it correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter is 100%, so the baseline is 3. The description adds meaningful semantics by clarifying that the spec parameter is a MotionSpec and by enumerating the validation dimensions applied to it, such as the primitive allow-list and injection rules, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Checks') and a specific resource ('MotionSpec'), then enumerates exactly what it validates against: schema, primitive allow-list, parameter bounds, and injection rules. It clearly distinguishes itself from the sibling motion_compile by positioning validation as a pre-compile safety check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to pre-check a spec before compiling,' which gives clear guidance on when to call this tool. It also explains the important warning behavior so an agent knows this is the right tool for accessibility checks before compilation, though it does not explicitly name or exclude alternatives beyond the pre-compile framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Added
motion_audit - Added
motion_compile - Added
motion_stats
2 tool updates
- First observed
motion_catalog - First observed
motion_validate
Related MCP Connectors
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Free WCAG 2.2/ADA/508 accessibility MCP: scan, AI fixes, verify, vision audit, localhost tunnel
Real-browser WCAG audit that also finds keyboard-inoperable controls axe-core misses, with fixes.
Accessibility compliance for AI coding tools. WCAG 2.2 reviews with shared evidence.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceA local/global MCP server that enables AI agents to generate GSAP v3 animation code, search documentation, validate CSS selectors, and provide best practice guidance.-
- AlicenseAqualityCmaintenanceMotionLint measures the motion your app actually ships — durations, easing curves, stagger intervals, exit timing, reduced-motion support — and scores it against a published set of animation standards with vision LLM.523 npmMIT
- AlicenseBqualityDmaintenanceAnalyzes scroll-triggered animations on any webpage using Playwright, extracting GSAP, ScrollTrigger, Lenis, and CSS code via AST and runtime detection.16MIT
- AlicenseCqualityDmaintenanceEnables Claude Code to create and manage GSAP animations, including timelines, scroll triggers, and performance optimization.152 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.