MCP server providing AI models with access to the MetaWealth Asset Launch Dashboard API. Enables natural language interaction with asset management, task tracking, user management, and other dashboard features.
This server has 43 tools with consistent naming conventions (verb_noun pattern) and basic parameter schemas. However, the implementation suffers from critical gaps: (1) Parameter descriptions are minimal or absent for many tools, most 'filter' and 'updates' parameters lack detail on what fields they accept; (2) Output schemas are completely undocumented, the code returns JSON but provides no schema definition to LLMs about response structure; (3) Error handling is generic and non-actionable; (4) Many parameter types are overly generic (object types for 'filter' and 'updates' with no schema constraints). While tool names follow verb_noun conventions (list_assets, create_asset, delete_asset), the LLM cannot understand what fields are valid in a filter object or what structure to expect from responses. This forces the agent to guess at parameters and misinterpret results. The two read-only external API tools (list_manual_sales, get_manual_sale, etc.) have clearer intent but still lack output schema documentation.
Apply template to asset
Assign task to user(s)
Calculate task completion time
Create new asset with workflow
Add comment to task
Delete asset (admin only)
Get detailed asset information
Output schemas completely undocumented. Tools return JSON responses but provide no schema definition to guide LLM about field structure, types, or required fields. This forces agents to guess at response structure and wastes tokens on clarification.
Generic 'object' type parameters with no schema constraints. Tools like update_asset, update_task, and update_phase accept 'updates' parameter of type 'object' with description 'Fields to update', no specification of which fields are valid, their types, or constraints. Agents cannot know what to pass.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get all phases for an asset
Get all tasks for an asset
Get user's assigned tasks
Get authenticated user information
Get department details
Get department members
Get department statistics
Get internal investor record details
Get specific investor details by ID
Get specific sale details by ID
Get department tasks
Get team members
Get user notifications
Get tasks for a phase
Get task details
Get task comments
Get instruction progress
Get unassigned department tasks
Get unread count
Get user details
Get assignable users
Get template details
List all assets in dashboard
List all departments
List internal investor records
List investor records with filtering/pagination (1,064+ records)
List sales records with filtering/pagination (3,692+ records)
List all users (admin only)
List available templates
Mark all as read
Mark notification as read
Remove task assignment
Update existing asset details
Update phase details
Update task information
Update instruction completion
Filter parameters lack detail. List operations (list_manual_sales, list_assets, list_users, etc.) accept 'filter' parameter as generic 'object' with minimal description. No specification of filterable fields, operators (equality, range, regex), or expected structure.
Error handling is generic and non-actionable. All tools return generic TextContent wrapping JSON or stack traces (e.g., 'Error executing tool') with no guidance on what the agent should do next: retry, lookup missing data, adjust input, or give up.
No tool annotations. Tools lack destructiveHint, readOnlyHint, and idempotentHint annotations required by current MCP spec (2026-07-28). LLMs cannot infer which operations are safe to retry or have irreversible consequences.
Parameter descriptions are incomplete or trivial. Many parameters lack substantive descriptions: 'limit' is described as 'Maximum number of records to return' (acceptable) but 'filter' is only 'Optional filter criteria' (vague). No examples of valid filter structures, valid field names, or range constraints for numeric limits.
Destructive operations lack confirmation/dry-run pattern. delete_asset allows deletion with no confirmation, dry-run, or undo mechanism. If an agent makes a mistake, data is lost irreversibly.
No pagination limit enforced in descriptions. list_manual_sales mentions '3,692+ records' but does not state the cap on returned items or recommend a limit. Agents could request all records and exhaust context window.
Tool descriptions are minimal. Many tools have descriptions under 50 characters (e.g., 'Get task details', 'Get user details'). Agents cannot determine when to prefer one tool over a similar one.