Skip to main content
Glama

Tap

tap
Read-onlyIdempotent

ADQL TAP query. For "how many confirmed exoplanets" or any per-planet count, query pscomppars (one row per confirmed planet) or COUNT(DISTINCT pl_name) -- never a bare COUNT(*) FROM ps, which counts published parameter SOLUTIONS (several per planet, currently ~40k rows for ~6.5k planets) and silently over-counts by 6x. Prefer the dedicated confirmed_planet_count tool for planet-count questions.

Input Schema

NameRequiredDescriptionDefault
queryYese.g. "SELECT TOP 5 pl_name, sy_dist FROM ps"
formatNojson (default) | csv | votable

Output Schema

NameRequiredDescriptionDefault
bodyNoNon-JSON response body (first 16000 chars)
countNo
itemsNo
formatNoResponse format (json, csv, or votable)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / count
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / items
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "pl_name": {
      +        "type": "string"
      +      },
      +      "sy_dist": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "query": "SELECT TOP 5 pl_name, sy_dist FROM ps"
      -  },
      -  {
      -    "format": "csv",
      -    "query": "SELECT pl_name, pl_mass, pl_orbper FROM ps WHERE pl_mass > 1.0"
      -  }
      -]New value: +[
      +  {
      +    "query": "SELECT TOP 5 pl_name, sy_dist FROM ps"
      +  },
      +  {
      +    "format": "csv",
      +    "query": "SELECT TOP 20 pl_name, pl_massj, pl_orbper FROM ps WHERE pl_massj > 1.0"
      +  }
      +]
  3. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "SELECT TOP 5 pl_name, sy_dist FROM ps"
      +  },
      +  {
      +    "format": "csv",
      +    "query": "SELECT pl_name, pl_mass, pl_orbper FROM ps WHERE pl_mass > 1.0"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Query result from NASA Exoplanet Archive TAP service",
      +  "properties": {
      +    "body": {
      +      "description": "Non-JSON response body (first 16000 chars)",
      +      "type": "string"
      +    },
      +    "format": {
      +      "description": "Response format (json, csv, or votable)",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), lowering the bar. The description adds genuine non-obvious context about how results behave: the ps table returns multiple parameter-solution rows per planet, causing a ~6x over-count. It stops short of disclosing result-size caps or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the tool identity leads, then the pitfall, then the routing recommendation. Every clause carries weight, though the deep specificity on planet counting makes it feel narrow for a general query tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is unnecessary. For a general-purpose query tool the description covers the highest-risk pitfall and the correct alternative, but omits the basics of available schemas/tables and ADQL-vs-SQL syntax scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters (query, format), and the schema itself embeds examples for both. The description adds no query-syntax or format-detail meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('ADQL TAP query'), which is concrete. It distinguishes itself from the sibling confirmed_planet_count and from the ps table trap, though it never broadly explains what TAP/ADQL actually is for an agent unfamiliar with the domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative tool explicitly ('Prefer the dedicated confirmed_planet_count tool for planet-count questions') and the condition that selects it, plus an explicit anti-pattern to avoid (bare COUNT(*) FROM ps). This is textbook when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.