The Detent motion engine as a Model Context Protocol server. Converts and exports springs, projects gestures, and searches a sourced knowledge base of animation constants. Exposes knowledge files as resources.
Detent provides 12 well-scoped tools with consistent naming (verb_noun pattern: describe_spring, convert_spring, export_spring, search_presets, etc.). All tools have descriptions (avg ~120 chars, within 10-1024 baseline). Input schemas are present and properly typed with JSON Schema. However, output schemas are NOT documented, the code shows tool implementations but no explicit return type declarations visible in the schema definitions. Parameter descriptions are present but some lack detail on constraints (e.g., 'spec' accepts multiple formats but the description could be clearer on precedence). Error handling is minimal, no recovery guidance or actionable error messages visible. The knowledge-base tools (search_knowledge, read_knowledge, bezel_*) are well-designed for composition but lack pagination/limit enforcement in some cases.
Get the Bezel design system spec for a component: usage, anatomy, states, and code examples.
Check colour contrast ratios in the Bezel design system against WCAG standards.
Get the Bezel design system review checklist for a specific area (colour, contrast, spacing, typography, etc.) or the full checklist.
Generate Bezel design system tokens (colours, spacing, typography, shadows) as CSS custom properties or JSON.
Convert a spring between any two vocabularies: SwiftUI, UIKit, Android, Compose, react-spring, Rebound, Origami, Facebook POP, Motion, Flutter, and raw physics.
Describe a spring's feel: duration, bounce, damping ratio, overshoot, peak time, visible bounces, and settling time.
Output schemas not documented. Tool implementations exist but return types are not declared in the MCP tool definitions. LLMs cannot plan downstream calls or extract fields without knowing response structure.
No error recovery guidance. Error messages are generic (e.g., 'no preset "id"'). LLMs receive no actionable next steps, should suggest 'use search_presets to find ids' or similar.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Export a spring as production code for SwiftUI, UIKit, Jetpack Compose, Material 3, CSS, Flutter, react-spring, Rebound, or Origami.
Project where a flick will land given its velocity and deceleration rate (iOS normal or fast). Optionally snap to the nearest target.
Read a full knowledge document or a specific section from the knowledge base.
Calculate rubber-band resistance when dragging past an edge, as iOS does. Returns how far content actually moves when dragged a given distance past the boundary.
Search the knowledge base (principles, patterns, platforms, research, glossary, Bezel design system) by keyword. Returns matching sections with excerpts.
Search the sourced knowledge base of animation constants by name, system, or parameter. Returns preset ids, names, systems, and sources.
Parameter 'spec' in spring tools accepts multiple formats (object or string) but description does not clarify precedence or validation rules. LLMs may pass invalid formats.
Knowledge search tools lack pagination. search_knowledge returns up to 6 results by default, but no next_cursor or offset mechanism for large result sets. Violates paginated-result pattern.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in the MCP schema, forcing LLMs to infer safety from descriptions.