A CANFAR Science Portal companion application for Linux with MCP server capabilities for astronomy research, FITS viewing, spectral cube analysis, VOSpace storage, and AI agent integration
Critical failures across naming, descriptions, and schemas. Of 52 tools, nearly all lack parameter descriptions and detailed input schemas. Tool names are inconsistent (mix of verb_noun and bare nouns). Most descriptions are generic placeholders (10-30 chars) that fail to explain WHEN to use the tool or WHAT it returns. The server exposes 52 tools but provides almost no actionable guidance for LLM selection or parameter binding.
Add annotations to cube
Apply or reject an agent proposal
Blink between FITS viewer tabs
Check notebook dependencies
Clear all recent searches
Close a cube viewer tab
Close a FITS viewer tab
Get one app's tools with their schemas
Describe the TAP schema
40+ tools have empty input schemas (properties: {}) with no parameter definitions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Execute an ADQL query
Export a FITS figure
Export search results
Get the current authentication state
Get cube channel profile
Get cube image
Get the current view in the application
Get data links for an observation
Get the status of a job
Get CAOM2 metadata for an observation
Get the current platform load information
Get preview image for an observation
Get the current search constraints
Get the current search form state
Get the current search results
Get the health status of CANFAR services
Install notebook dependencies
START HERE when you do not know which tool you need. Lists the app's areas — FITS Viewer, Cube Viewer, Notebook, Storage, Search, Sessions and the rest — with what each is for and how many tools it has. Then call describe_app with the one you want to get just those tools and their arguments, instead of reading all of them.
List cube annotations
List pending agent proposals awaiting review
List recently opened cubes
List recent searches
Load a recent search
Everything about ONE tool: what it does in full, every argument with its type and meaning, which area it belongs to, and the other tools in that area. Pass `tool` with a tool name. Use it before calling anything whose arguments you are unsure of, and after an error you do not understand.
Remove a recent search
Reset the search form to defaults
Resolve a target name to coordinates
Run a saved query
Execute a search with current constraints
Search for observations in CADC
Find tools by what they DO, across every area — use when you know what you want but not which app owns it ("draw a region", "spectrum", "upload a file"). Matches names and descriptions, best first, and says which app each belongs to so you can describe_app that one next.
Set an ADQL query
Set cube transfer function
Set the search constraints
Set the search form state
Set the search results view
Show spectrum from cube
Show detailed view of an observation
Show detailed view of a search result row
Switch to a cube viewer tab
Switch to a FITS viewer tab
Validate an ADQL query
Perform a VizieR cone search
Descriptions for 40+ tools are 20 characters or less ('Get the current view', 'Set the search form'). LLMs cannot determine when to use these tools or what they return.
No parameter descriptions across the entire tool set. Even tools with non-empty properties (describe_app, search_tools) lack descriptions for their parameters. LLMs cannot infer what 'app' or 'query' means without explicit guidance.
No output schemas documented. Tools return data but LLMs have no visibility into response structure, field names, or types. Agents cannot plan downstream tool calls or extract required IDs for chaining.
No error handling guidance. Tools lack recovery hints, retryability classification, or actionable error messages. An LLM receiving a failure has no guidance on what to do next.