Skip to main content
Glama

Get page motion

get_page_motion
Read-onlyIdempotent

List motion for one page view: view entrances (fade/rise, stagger), procedural canvas/shader fields, and real CSS animations. Idle none/0s declarations are omitted. Crawl does not record per-frame playback timings.

Input Schema

NameRequiredDescriptionDefault
pageYesCaptured page key returned by list_pages or get_application_manifest, not a URL or filesystem path.
viewYesExact stored profile key from list_pages.views (desktop, mobile, numbered profiles or a device label); do not pass the operating system here.
limitNoMaximum items returned, clamped to 1..200. Default 100.
productYesProduct key, for example finance-ozon-ru
versionYesExact capture version returned by list_versions. Pin the same version across related calls; do not use latest as an alias.
environmentNoEnvironment ID from the selected backend platform type in list_platforms.options.platforms[].environments[].id (backend implementation). Omit only when the version has one captured environment. Use captured pairs from list_platforms/list_versions for actual availability.

Output Schema

NameRequiredDescriptionDefault
resultYesCaptured motion declarations

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedOutput schema / $defs / element / properties / a11y
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "DOM approximation of computed role, accessible name, focusability and ARIA states",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / component
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Component kind used for the state catalog (button, link, nav-item, textbox, checkbox, tab, menu-trigger, disclosure, card…)",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / embed
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Embedded frame or object: src, provider, title, same-origin flag. The child document is not captured",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / field
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Form control metadata: type, name, label, placeholder, constraints, options. Never contains entered values",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / form
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Form element: endpoint without query, method, enctype, field count",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / frame
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Embedded frame inspection: url, title, element count, evidence file and screenshot",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / logo
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Brand logo evidence: primary, score, confidence (high/medium/low) and the signals that matched",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / media
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Image or player attributes: alt, srcset, sizes, loading, autoplay, loop, muted, poster, sources, tracks",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / observedStates
      Added value: +{
      +  "description": "States the page already showed for this element (disabled, checked, selected, expanded, current, loading, error…)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / element / properties / pseudoStyles
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Computed styles of ::before, ::after and a styled ::marker",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / reveals
      Added value: +{
      +  "description": "Content revealed by real hover or click on this element: evidence file with the new nodes, screenshot and count",
      +  "items": {},
      +  "type": "array"
      +}
    • addedOutput schema / $defs / element / properties / stateCatalog
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Applicable states for the component kind with measured, unchanged and unsupported lists and screenshot file names per state",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / states
      Added value: +{
      +  "description": "Measured computed-style deltas per state (pseudo-class forced through CDP or DOM state set and restored): state, method, computed, screenshot for the element itself; trigger is the ancestor whose state restyles this node",
      +  "items": {},
      +  "type": "array"
      +}
    • addedOutput schema / $defs / element / properties / themeVariants
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "description": "Computed-style deltas keyed by alternate color scheme, measured with prefers-color-scheme emulation and the site theme switch",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "title attribute",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / $defs / element / properties / volatile
      Added value: +{
      +  "description": "Reasons the region changes independently of user input (aria-live, carousel, autoplay video, looping animation, observed mutations); exclude from visual diffs",
      +  "items": {},
      +  "type": "array"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / limit / description
      Added value: +"Maximum items returned, clamped to 1..200. Default 100."
    • addedInput schema / properties / page / description
      Added value: +"Captured page key returned by list_pages or get_application_manifest, not a URL or filesystem path."
    • addedInput schema / properties / product / description
      Added value: +"Product key, for example finance-ozon-ru"
    • addedInput schema / properties / version / description
      Added value: +"Exact capture version returned by list_versions. Pin the same version across related calls; do not use latest as an alias."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "element": {
      +      "additionalProperties": true,
      +      "description": "Captured element; fields depend on capture format and available evidence",
      +      "properties": {
      +        "computed": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": true,
      +              "description": "Captured CSS properties",
      +              "properties": {},
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "content": {
      +          "anyOf": [
      +            {
      +              "description": "content",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "effects": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": true,
      +              "description": "Captured effects",
      +              "properties": {},
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "id": {
      +          "description": "Count or zero-based index",
      +          "type": "integer"
      +        },
      +        "layout": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": true,
      +              "description": "Measured layout",
      +              "properties": {},
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "lines": {
      +          "anyOf": [
      +            {
      +              "description": "Result entries",
      +              "items": {
      +                "description": "Text value",
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "motion": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": true,
      +              "description": "Captured motion",
      +              "properties": {},
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "parent": {
      +          "anyOf": [
      +            {
      +              "description": "Count or zero-based index",
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "path": {
      +          "anyOf": [
      +            {
      +              "description": "path",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "rect": {
      +          "anyOf": [
      +            {
      +              "$ref": "#/$defs/rect"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "role": {
      +          "anyOf": [
      +            {
      +              "description": "role",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "source": {
      +          "anyOf": [
      +            {
      +              "description": "source",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "tag": {
      +          "anyOf": [
      +            {
      +              "description": "tag",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "text": {
      +          "anyOf": [
      +            {
      +              "description": "text",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "textRuns": {
      +          "anyOf": [
      +            {
      +              "description": "Result entries",
      +              "items": {
      +                "additionalProperties": true,
      +                "description": "Captured styled text run",
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "rect": {
      +      "additionalProperties": true,
      +      "description": "Captured CSS-pixel rectangle",
      +      "properties": {
      +        "height": {
      +          "description": "height",
      +          "type": "number"
      +        },
      +        "width": {
      +          "description": "width",
      +          "type": "number"
      +        },
      +        "x": {
      +          "description": "x",
      +          "type": "number"
      +        },
      +        "y": {
      +          "description": "y",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "description": "Structured result. Existing text or image content remains available in content.",
      +  "properties": {
      +    "result": {
      +      "additionalProperties": true,
      +      "description": "Captured motion declarations",
      +      "properties": {
      +        "declarations": {
      +          "description": "Result entries",
      +          "items": {
      +            "$ref": "#/$defs/element"
      +          },
      +          "type": "array"
      +        },
      +        "playbackEventsRecorded": {
      +          "description": "Whether this condition holds",
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "declarations",
      +        "playbackEventsRecorded"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "result"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral detail beyond that: idle none/0s declarations are omitted and crawl does not record per-frame playback timings, which tells the agent what data will be missing. No pagination behavior is described, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource scope and followed by the concrete contents and the two data-omission caveats. Every sentence carries information; nothing is redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value shape need not be explained, and the description covers scope, item categories, and known data gaps (idle declarations, per-frame timings). The only omission is explicit guidance on when to use this versus the transitions/component-animations siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (including the nuanced page/view/version/environment semantics) is thoroughly documented in the schema itself. The description adds no parameter-level syntax or format detail, so the baseline 3 for fully-covered schemas applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('List') and a precisely scoped resource ('motion for one page view'), then enumerates the three motion categories returned: view entrances (fade/rise, stagger), procedural canvas/shader fields, and real CSS animations. This clearly separates it from component-level siblings like get_component_animations, though it never names an alternative tool outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool is scoped to 'one page view' and must be driven by the page/view/version keys, but there is no explicit statement of when to reach for this versus get_page_transitions or get_component_animations. The agent must infer the routing condition from the resource scope alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources