{"data":{"name":"com.frapea/motion","title":"Motion by Frapea","description":"One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.","version":"1.0.0","websiteUrl":"https://motion.frapea.com","repositoryUrl":null,"remotes":[{"url":"https://motion.frapea.com/mcp","type":"streamable-http"}],"packages":[],"status":"active","isLatest":true,"publishedAt":"2026-10-11T08:19:13.406Z","updatedAt":"2026-10-11T08:19:13.406Z","source":"official-registry","verification":"official","confidence":100,"stars":null,"sources":[{"stars":null,"title":"Motion by Frapea","source":"official-registry","sourceId":"com.frapea/motion","updatedAt":"2026-10-11T08:19:13.406Z","confidence":100,"websiteUrl":"https://motion.frapea.com","description":"One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.","verification":"official","repositoryUrl":null}],"toolIndex":{"tools":[{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"check_playback","title":"Check playback","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"Omit for the active one."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"Check playback","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"a2f056fa9e0d6828bfa2c6b3a92b7b6f0eae207f89a38d1ea891ebf57aeb77d9","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"close_composition","title":"Close composition","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"The composition to close. Required."}},"required":["token","id"],"additionalProperties":false},"annotations":{"title":"Close composition","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"886b9fe7878aeb29baff5398c957cecd149948fd66002bd7ff6588db73b9ec63","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"connect","title":"Connect to a Motion tab","description":"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.","inputSchema":{"type":"object","properties":{"code":{"type":"string","description":"The eight-character pairing code shown on the Motion page."}},"required":["code"],"additionalProperties":false},"annotations":{"title":"Connect to a Motion tab","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"f8167365a54f2ac3f16504aeff6ac49efda8123a1500b392e898bf0a1925a81c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"create_composition","title":"Create composition","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"name":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"fps":{"type":"number"},"durationInFrames":{"type":"number"},"entry":{"type":"string","description":"Defaults to composition.tsx."},"files":{"type":"object","additionalProperties":{"type":"string"}},"schema":{"type":"object","description":"Props schema; drives the editable controls."}},"required":["token","name","width","height","fps","durationInFrames","files"],"additionalProperties":false},"annotations":{"title":"Create composition","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"a82fa97d4d7ceb2c8ebde6a720bf80285cd83f1659e31db4b620ac3d97df8ee7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"create_session","title":"Start a session without a tab","description":"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.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Start a session without a tab","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"28ee5e3774f38bb143186ac6c38007bea3b2799fd2030866be2996a6787cc565","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"delete_media","title":"Delete media","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"ids":{"type":"array","items":{"type":"string"},"minItems":1,"description":"The files to delete."}},"required":["token","ids"],"additionalProperties":false},"annotations":{"title":"Delete media","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"92c4ce8714a6679fb9e0083cfc8f4f8cb2abb062f0f3576d7ab962cca063e451","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"get_composition","title":"Get composition","description":"Returns one composition in full: manifest, every source file, and current prop values — the state an update_composition edit applies to.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"Omit for the active one."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"Get composition","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"06880312846b5533ed196e18a591c45b1ea8f72de66d44f97b210583bfdb3d8c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"get_media","title":"Get media bytes","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string"}},"required":["token","id"],"additionalProperties":false},"annotations":{"title":"Get media bytes","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"ef5d040c2f1ce3d2a5399060d56f73079ca1f12a7d170105577dd938a10a9783","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"get_problems","title":"Get problems","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"Only this composition. Omit for all of them."},"includeWarnings":{"type":"boolean","description":"Include warnings (default true)."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"Get problems","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"64c0756c20786d559c827325573fb2f8cdde289e268b73bf9d2f080a7c737b6c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"inspect_composition","title":"Render frames","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"Omit for the active one."},"atFrames":{"type":"array","items":{"type":"number"}},"props":{"type":"object","description":"Merged over the composition's props for this render only, e.g. {partsBoard:true}."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"Render frames","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"7475132541ca527382d544266ed548dc60a7337fbfd42c7144f6b03fd5edbe7c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"inspect_media","title":"Inspect media","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string"},"atSec":{"type":"array","items":{"type":"number"},"description":"Up to 12 timestamps."}},"required":["token","id"],"additionalProperties":false},"annotations":{"title":"Inspect media","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"a9d399b778242990751967bcec376c80dda08a3070ef3d8ab9dfb6f96de604a2","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"list_compositions","title":"List compositions","description":"Lists the compositions open in the session, and which one is on screen.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"List compositions","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"c2e6f0cef4946d794b66fa75bff8557db9474d1fdafb9ed7c30f63fadbc3152a","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"list_media","title":"List media","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"path":{"type":"string","description":"Folder to list. Omit for all."}},"required":["token"],"additionalProperties":false},"annotations":{"title":"List media","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"9e3c476cc49d69211b3962fac62ae4b56da011dee2391c91e7906f207a0f9ea4","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"organize_media","title":"Organize media folders","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"action":{"type":"string","enum":["move","createFolder","deleteFolder"]},"ids":{"type":"array","items":{"type":"string"}},"toFolder":{"type":"string"},"name":{"type":"string"},"parent":{"type":"string"},"folder":{"type":"string"}},"required":["token","action"],"additionalProperties":false},"annotations":{"title":"Organize media folders","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"17be6b76fad9c3e3357ac3da4bc4aaa8b5ea8eb4e490d5387091b77e67f34433","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"put_media","title":"Add media from a URL","description":"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).","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"name":{"type":"string","description":"Filename, including extension."},"url":{"type":"string","description":"http(s) URL for the browser to fetch."},"data":{"type":"string","description":"Base64 bytes, for small assets."},"folder":{"type":"string","description":"Folder to put it in. Omit for the root."}},"required":["token","name"],"additionalProperties":false},"annotations":{"title":"Add media from a URL","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"1a4929660890db97cac764203c9d25d79d2d0e40e675ba8648b32512efb088f7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"read_skill","title":"Read a Motion guide","description":"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.","inputSchema":{"type":"object","properties":{"topic":{"type":"string","enum":["motion","motion-craft","motion-text","motion-effects","motion-transitions","motion-examples","motion-workflow","motion-review"]}},"required":["topic"],"additionalProperties":false},"annotations":{"title":"Read a Motion guide","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"0ae0b4570c091cb68f11c5f05570497e4552760c11be66e4e292e0c4fcfb4af7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"set_props","title":"Set composition props","description":"Sets prop values on a composition, the same values the user's controls change. Merged by key; keys sent replace their current values.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string"},"props":{"type":"object"}},"required":["token","props"],"additionalProperties":false},"annotations":{"title":"Set composition props","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"e373b7bbf5d224cbd88c17cf116e107ddd97133b65649e4d742216755aac1bf6","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"tell_user","title":"Show a status line","description":"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'}.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"text":{"type":"string","description":"One friendly sentence, first person. Not a log line."},"kind":{"type":"string","enum":["working","done","problem"],"description":"Omit while working. 'done' ends the job, 'problem' flags a blocker."},"step":{"type":"number","description":"Which one you are on, e.g. 2."},"of":{"type":"number","description":"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."}},"required":["token","text"],"additionalProperties":false},"annotations":{"title":"Show a status line","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"90c30ec6f5621ec148273326998ccb9fea8bbe5612319bc589dc8a52736301c7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"update_composition","title":"Update composition","description":"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.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"The session token that connect returned."},"id":{"type":"string","description":"Omit for the active one."},"name":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"fps":{"type":"number"},"durationInFrames":{"type":"number"},"files":{"type":"object","additionalProperties":{"type":"string"}},"schema":{"type":"object"}},"required":["token"],"additionalProperties":false},"annotations":{"title":"Update composition","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false},"definitionHash":"66b1871c63d57dd67ffc4058f8bdbfdede5234fc42c11b7f679a2d04db9fbba1","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"},{"serverName":"com.frapea/motion","endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","name":"wait_for_tab","title":"Wait for the Motion tab","description":"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.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Wait for the Motion tab","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"494fa176e938bb8cfe6005877901a5c7c46565fcf75f2cd351303f7bbac5348a","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-03T18:47:26.221Z","metadataTrust":"untrusted"}],"endpoints":[{"endpointFingerprint":"ccec2234c66f565d78f1fe495a55a2fa525919816c033eb7e83c4fa48565799d","protocol":"streamable-http","status":"indexed","toolCount":20,"observedAt":"2026-11-03T18:47:26.221Z"}],"authentication":"unknown"},"connectionConfigurations":{"status":"ready","authentication":"not embedded","clients":{"Claude Desktop":{"mcpServers":{"com.frapea/motion":{"url":"https://motion.frapea.com/mcp"}}},"Cursor":{"mcpServers":{"com.frapea/motion":{"url":"https://motion.frapea.com/mcp"}}},"VS Code":{"servers":{"com.frapea/motion":{"type":"http","url":"https://motion.frapea.com/mcp"}}}}},"resourceType":"mcp-server","callable":true,"runtime":{"callable":true,"protocols":["mcp"]},"interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://motion.frapea.com/mcp"}],"profile":{"apiVersion":"1","schemaVersion":"1","id":"mcp-server:com.frapea%2Fmotion","resourceType":"mcp-server","canonicalUrl":"https://www.agentsjunction.com/api/v1/servers/com.frapea%2Fmotion","name":"com.frapea/motion","description":"One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.","interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://motion.frapea.com/mcp"}],"capabilities":[],"identity":{"source":"official-registry","websiteUrl":"https://motion.frapea.com","repositoryUrl":null,"version":"1.0.0"},"verification":{"state":"official","confidence":100},"operations":{"resourceType":"mcp-server","name":"com.frapea/motion","status":"online","lastCheckedAt":"2026-11-03T20:17:59.595Z","lastSuccessfulCheck":"2026-11-03T20:17:59.595Z","latencyMs":114,"consecutiveFailures":0,"isStale":false,"checks":{"endpointReachable":true,"protocolValid":true,"agentCardValid":null,"mcpHandshakeValid":true},"lastSeen":null,"lastSuccessfulInteraction":null,"lastHealthCheck":"2026-11-03T20:17:59.595Z","source":{"type":"health-check","url":null},"observedAt":"2026-11-03T20:17:59.595Z"},"security":null,"timestamps":{"createdAt":"2026-10-11T08:19:13.406Z","updatedAt":"2026-10-11T08:19:13.406Z","observedAt":"2026-11-03T20:17:59.595Z"},"compatibility":{"serverVersion":"1.0.0","protocolVersions":[{"protocol":"mcp","version":null}]}}}}