Skip to main content
Glama

SaturnSQL

Run saved query

run_saved_query
Destructive

Run a saved query, substituting its declared {{variables}} from the values supplied.

Input Schema

NameRequiredDescriptionDefault
idYesSaved query id from list_queries.
limitNoMaximum rows to return, 1 to 10000. Defaults to 1000.
valuesNoVariable values keyed by variable name, e.g. {"start": "2026-01-01"}. Omitted variables fall back to their saved defaults.
timeZoneNoIANA time zone for relative date variables such as today, e.g. Europe/Helsinki. Defaults to UTC.

Output Schema

NameRequiredDescriptionDefault
resultNo
successNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / values / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "duration": {
      -        "description": "Execution time in milliseconds.",
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "fields": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": true,
      -              "properties": {
      -                "name": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "rowCount": {
      -        "type": [
      -          "number",
      -          "null"
      -        ]
      -      },
      -      "rows": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "One object per row, keyed by column name."
      -      },
      -      "truncated": {
      -        "description": "True when the row limit or memory cap cut the result short.",
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "duration": {
      +        "description": "Execution time in milliseconds.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "fields": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "name": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "rowCount": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "rows": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "One object per row, keyed by column name."
      +      },
      +      "truncated": {
      +        "description": "True when the row limit or memory cap cut the result short.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observed

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, which is surprising for something called 'Run a saved query', yet the description says nothing about side effects, whether the underlying query may write data, or what permissions are needed. With no annotations-level explanation of the risk, the description's silence on destructiveness is a significant gap (no contradiction, however).

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?

One tight, front-loaded sentence with no filler. It is efficient, though the terseness is partly under-specification rather than deliberate economy.

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

Completeness2/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 values need not be described, but for a destructive-flagged tool with a nested 'values' object and multiple competing siblings, the description leaves the agent without routing guidance or risk disclosure. It covers the mechanic of variable substitution and nothing else.

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%, so id, limit, values, and timeZone are already fully documented, establishing a baseline of 3. The description's mention of variable substitution reinforces the 'values' parameter but adds no syntax or fallback behavior beyond what the schema already says.

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?

States a specific verb and resource ('Run a saved query') plus a distinctive behavior: substituting declared {{variables}} from supplied values. That distinguishes it reasonably from save_query or list_queries, though it never names the nearest sibling, execute_query, so the reader must infer the difference.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance and never mentions alternatives such as execute_query or run_schedule_now, which are the obvious competing entry points. An agent must infer that a saved query id is required and that this is the ad-hoc execution path rather than the scheduled one.

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.

Resources