Stateless OHLC primitives service — bars in, indicators + SMC objects out. Connect an OpenClaw/MCP agent to a self-hosted wickworks technical-analysis service over MCP.
Server exposes 4 technical-analysis tools with reasonable descriptions (194 - 392 chars, within baseline). All tools are READ_ONLY and stateless. However, schemas are incomplete: the `compute` tool has a detailed input schema, but `health`, `list_indicators`, and `metadata` declare empty input objects without documenting what they return. Parameter descriptions exist but lack constraints (enums, ranges, format specs). No error handling guidance, no output schema documentation, and no tool annotations (readOnlyHint). The `compute` tool's description is verbose (392 chars) but actionable; others are adequate but generic.
Compute indicators + SMC primitives from OHLC bars. ``bars``: list of ``{time (UTC unix seconds), open, high, low, close, volume}``. The caller chooses the volume or activity series before the request. ``indicators``: map of output-name -> spec, where ``spec=true`` runs the indicator (keyed by name) with defaults, or a params object overrides them (include ``"type"`` to run a known indicator under a different output name). ``symbol`` / ``timeframe`` are echoed back. Returns the primitives as JSON (camelCase keys) — the same envelope as the REST ``POST /`` (``symbol``, ``timeframe``, ``candles``, plus one entry per requested output name). Raises on unknown indicator, empty bars/indicators, too many bars, or insufficient bars for a requested indicator's warm-up.
Liveness check + the running wickworks version.
List the registered indicator types accepted by ``compute``'s ``indicators`` map. Each name is a valid spec key: ``spec=true`` runs the indicator with its defaults; a params object overrides them (include ``"type"`` to run a known indicator under a different output name). This is the indicator catalog only — Smart-Money-Concepts objects and derived levels have their own output paths; call ``metadata`` for the full set.
Static catalog of human-readable labels + descriptions for every output path ``compute`` can produce. Content is static for a given wickworks version — cache it and invalidate on the ``version`` field.
Three tools (health, list_indicators, metadata) declare empty input schemas {} but do not document their output structure. LLMs cannot plan downstream tool calls or extract required fields without knowing what these tools return.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being READ_ONLY. Agents cannot distinguish safe tools from destructive ones without explicit hints.
compute tool's 'bars' parameter lacks format specification. Description says 'OHLCV bars with time (UTC unix seconds)' but does not specify: required fields per bar object, numeric type (float vs int), or validation rules (e.g., high >= low, volume >= 0).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
No error handling guidance. compute tool description mentions it 'Raises on unknown indicator, empty bars/indicators, too many bars, or insufficient bars' but does not explain what the LLM should do next (retry, ask user, suggest alternatives).
health tool description is generic ('Liveness check + the running wickworks version') and does not explain when to call it or what fields the response contains (e.g., version format, status codes).