Headless control of AutoPhaseAnalysis (XRD phase identification and Rietveld refinement). Typical workflow: inspect the pattern with get_pattern_info / get_pattern_data, then start_phase_search (or start_refinement for a known phase list), poll get_job_status until completed, then list_solutions, get_solution_details, get_profile_data, get_peak_list, get_lst_content and export_solution. Only one analysis job runs at a time; searches can take minutes.
21 tools with mostly complete schemas and descriptions, but significant gaps in error handling, output documentation, and parameter validation. Tool names follow verb_noun convention well (load_pattern, get_pattern_info, start_phase_search). Descriptions average ~100-150 chars, meeting baseline minimums but lacking LLM-optimized guidance on WHEN to use each tool vs alternatives. Parameters have types and descriptions, but many lack constraints (enums, ranges, format specs). No documented output schemas for complex tools like start_phase_search or get_solution_details. Error handling is minimal, no recovery guidance, no actionable error messages. Security: no secrets in params (good), but no permission gates or audit trail declarations.
Cancel a running analysis job.
Clear the persistent CIF cache.
Estimate the background of a pattern using iteratively-clipped Chebyshev polynomial fitting.
Export a solution in various formats (plot data, publication figure, HTML, report).
List all available instrument profiles.
List all available X-ray sources and their wavelengths.
Get information about the persistent CIF cache (downloaded structures from COD).
No documented output schemas for complex tools (start_phase_search, start_refinement, get_solution_details, get_profile_data, get_peak_list). LLMs cannot plan downstream calls or extract required fields without knowing response structure.
start_phase_search and start_refinement have 20+ parameters with minimal constraint documentation. No enums for mutually exclusive options (e.g., source vs custom_wavelength), no range specs for numeric params (degree, iterations, max_phases, lattice_flex, rp). LLMs will hallucinate invalid values.
No error handling guidance. Tools return job_id or status but do not document failure modes, recovery steps, or actionable error messages. If a job fails, the LLM has no guidance on what to try next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Poll the status of a running or completed analysis job.
Get the raw BGMN .lst output file content for a solution.
Get the full 2θ and intensity arrays for a pattern.
Get metadata about a loaded pattern: 2θ range, point count, intensity statistics.
Get the list of identified peaks for a solution.
List all saved parameter presets (GUI-compatible).
Get the calculated vs. observed diffraction profile for a solution.
Get detailed metrics and phase information for a specific solution.
List all solutions (ranked phase combinations) from a completed search job.
Load an XRD pattern file and return its 2θ and intensity arrays.
Load a saved parameter preset and return its state.
Save the current parameter state as a named preset.
Start a phase search analysis on one or more XRD patterns. Returns a job_id for polling.
Start a Rietveld refinement on a pattern with a known phase list. Returns a job_id for polling.
Destructive tools (clear_cif_cache) lack confirmation/dry-run support. An agent could accidentally wipe the cache without a safety gate. No permission checks or audit trail declarations.
Parameter descriptions lack format/constraint details. E.g., 'zero_point_range' is described as 'Zero-point refinement range in degrees' but no min/max or example format. 'instrument_profile' accepts arbitrary strings with no enum of valid profiles despite get_available_instruments existing.