MCP server wrapping PlanSys2 planning clients
Server has 16 tools with consistent naming (verb_noun pattern: get_*, start_*, check_*) and reasonable descriptions (50-150 chars typical). However, critical gaps undermine quality: (1) ALL tools lack visible input schemas in the provided code, only tool 3 shows a schema fragment. (2) Most parameter descriptions are minimal or absent. (3) Output schemas are completely undocumented, no indication of what fields are returned. (4) Error handling is not evident in tool definitions. (5) Tools 12-14 have extremely sparse descriptions (<20 chars). Per-tool analysis reveals 11 tools with description scores ≤40 due to brevity or missing details. This is a typical community server: decent naming, weak schema rigor, minimal documentation of outputs.
Check the status of plan execution. This method should be called periodically to monitor plan execution status. It will return information about whether the plan is still executing or has completed.
Get the complete PDDL domain definition. Returns the full domain specification including types, predicates, functions, and actions defined in PlanSys2. Example usage: - get the domain definition - show me the current domain - what is the PDDL domain
Get detailed information about a specific action. Returns comprehensive information about a specific action including its parameters, preconditions, and effects. Example usage: - get details for action move - show me information about navigate - get action details for pick
Get all actions in the domain. Returns a list of all action names (regular and durative actions) including their parameters, preconditions, and effects. Example usage: - get all actions - show me all domain actions - list actions and durative actions
Get constants of a specific type in the domain. Returns all constant instances of the given type. Example usage: - get constants for type robot - what are the robot constants - list constants of type location
Output schemas completely undocumented. No tool definition shows what fields are returned (e.g., does get_domain return {domain_name, types, predicates, actions} or a raw PDDL string?). LLMs cannot plan downstream calls or extract data without knowing response structure.
Input schemas missing or invisible for 14 of 16 tools. Only get_domain_constants shows a schema fragment. Without visible schemas, cannot verify parameter types, required fields, or constraints. Hard scoring rule: schema score must be 0 when not visible.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
Get detailed information about a specific derived predicate.
Get detailed information about a specific durative action. Returns comprehensive information about a specific durative action including its parameters, conditions, and effects. Example usage: - get details for durative action move - show me information about durative navigate - get durative action details for charge
Get detailed information about a specific function. Returns comprehensive information about a specific function including its parameters and definition. Example usage: - get details for function battery_level - show me information about distance - get function details for speed
Get all functions defined in the domain. Returns a list of all function definitions with their parameters. Example usage: - what functions are defined - list all domain functions - show domain functions
Get detailed information about a specific predicate. Returns comprehensive information about a specific predicate including its parameters and full definition. Example usage: - get details for predicate robot_at - show me information about battery_full - get predicate details for connected
Get all predicates defined in the domain. Returns a list of all predicate definitions with their parameters. Example usage: - get all predicates - show me domain predicates - list predicates
Get all types defined in the domain. Returns a list of all type names available in the current domain. Example usage: - what types are defined in the domain - list all domain types - show domain types
Get the ordered sub-goals.
Get the current plan being executed.
Get the remaining plan to be executed.
Start execution of a plan without blocking. This method initiates execution of the provided plan and returns immediately. Use `check_plan_execution()` to monitor the execution status.
Three tools (get_plan, get_remaining_plan, get_ordered_sub_goals) have descriptions under 20 characters ('Get the current plan being executed.' = 38 chars, but 'Get the remaining plan to be executed.' = 38 chars, 'Get the ordered sub-goals.' = 26 chars). These are critical executor tools but lack context for LLM selection.
No error handling guidance visible in tool definitions. If start_plan_execution fails (invalid plan JSON, execution already running), what should the LLM do? No recovery hints, no categorization (retryable vs fatal). Agents will be stuck on failures.
Parameter descriptions sparse or missing. start_plan_execution accepts 'plan' as JSON string but does not document format (PDDL syntax? JSON structure? Example?). get_domain_constants requires 'type_name' but does not explain valid type names or how to discover them. LLMs will guess.