Cloudflare Worker implementing MCP Streamable HTTP transport that orchestrates multiple fitness and research backends: Smart Rabbit (fitness programs), PubMed (scientific literature), Brave Search (web search), and FitLexicon (exercise database).
DACO provides 8 tools with explicit schemas and descriptions. Strengths: well-structured JSON schemas, clear action verbs, good contextual descriptions. Weaknesses: missing output schema documentation, inconsistent parameter descriptions, no error handling guidance, security concerns with API key exposure patterns. The smart_rabbit_generate_program tool has excellent pre-condition guidance but inconsistent parameter documentation (some params lack descriptions). Tools are moderately well-named but some descriptions could better explain WHEN to use each tool vs alternatives.
Real-time web search using Brave Search API. Use for current information, prices, news, trends, or anything requiring up-to-date data. Returns titles, descriptions, and URLs of top results.
Execute multiple DACO tool calls simultaneously and return all results. Use this when you need results from several independent tools at once. Example: search PubMed + call Smart Rabbit API + search exercises, all in parallel. This is the core PRISM pattern applied to tool execution.
List all available backends and their tools with descriptions. Use this first to understand what DACO can do for the current task.
Get full details of a specific exercise by ID, including instructions, muscles worked, and images.
Search the FitLexicon exercise database (873 exercises, 8 languages). Filter by muscle group, category, equipment, or language. Use to find specific exercises with full instructions and images.
Missing output schema documentation for ALL tools. Response structures are undocumented, forcing LLMs to parse unstructured text or infer field names. This violates pattern:tool and pattern:response-shaper.
Inconsistent parameter descriptions. Some parameters (smart_rabbit_generate_program 'style' and 'condition') have no descriptions in schema. Others use examples instead of constraints (fitlexicon_search_exercises 'e.g., chest, back'). This violates pattern:constrained-input and pattern:tool-description.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 12 | 2024-11-05+ | v1 |
Search PubMed for peer-reviewed scientific articles. Returns titles, authors, journal, year, and direct links. Use for evidence-based answers on training, physiology, nutrition, health. Examples: "hypertrophy training volume", "HIIT fat loss", "sleep recovery athletes"
Generate a personalized AI fitness program using Smart Rabbit. Returns a complete training plan with exercises, sets, reps, tempo, rest times, and a 6-week progression. ⚠️ IMPORTANT: Before calling this tool, make sure you have collected from the user: - age (required) - sex: male or female (required) - level: beginner / intermediate / advanced (required) - sessions: number of training sessions per week, 2-6 (required) - duration: session length in minutes — 30, 45, 60, 75, or 90 (required) - equipment: bodyweight / minimal / home_gym / full_gym (required) - goal: muscle / strength / endurance / weight_loss / wellness / definition (required) - condition: sedentary / light / moderate / active / athletic (ask if not provided) - preferences: exercise preferences, favorite equipment (ask) - limitations: injuries or exercises to avoid (always ask for safety) If any required field is missing, ask the user before calling this tool.
Get all valid parameter values for Smart Rabbit program generation (goals, equipment, levels, styles).
No error handling guidance. Tools call external APIs (PubMed, Brave, RapidAPI) but provide no recovery hints if they fail. Code shows generic error returns ('FitLexicon error: {status}') with no actionable next steps for the LLM. Violates pattern:recovery-guide and pattern:error-classification.
API keys passed as environment variables but no documentation of permission scopes. Tools do not declare what permissions they require (read:fitness, write:api, etc.). Violates pattern:scope-declaration.
smart_rabbit_generate_program has excellent pre-call validation guidance but lacks guidance on multi-step planning. Description states 'ask the user' but does not document whether the tool itself validates inputs or expects the LLM to enforce constraints. Unclear responsibility split.
No pagination or result limits documented. pubmed_search caps at 10 results, fitlexicon_search_exercises caps at 50, but descriptions do not explain what happens if the API has more results or how to iterate. Violates pattern:paginated-result.
daco_execute_parallel lacks documentation on failure modes. If one call in the array fails, does it halt the rest? Return partial results? Retry? This is critical for agent reliability.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While all tools appear read-only (risk field is marked READ_ONLY), schema does not include these fields. Violates current MCP spec alignment for tool annotations.