Skip to main content
Glama
singlestore-mcp-server

singlestore-mcp-server

by jonasliesas

notebook_sas_cell

Destructive

Run SAS DATA steps, PROCs, and macros in the connected SAS Viya session without a local kernel. Returns ODS output, warnings, logs, and run status for inspection.

Instructions

Run a SAS cell (DATA steps, PROCs, macro code) in the Workspace's SAS Compute session of the SAS Viya connection (default: the active one) - the session, queue, pre-warm and Stop (sas_stop) of the SQL Editor's SAS runs and the Python in SAS cells, so WORK tables and macro variables are shared with them; Restart SAS session (sas_session_reset) clears them. Doesn't need a local kernel. The automatic SingleStore library (S2) is the session's (the active SingleStore connection's database); database: the notebook's, only named in the note.

``run_id`` / ``wait_ms`` / ``running`` as notebook_sas_python (ask again with notebook_sas_python_status). Done:
``outputs`` (the notebook's SAS output: error / warning counts, ODS output, the log) and ``status`` ok / error /
aborted.

Input Schema

NameRequiredDescriptionDefault
run_idNo
sourceYes
wait_msNo
databaseNo
connectionNo
notebook_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.11.0

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false and destructiveHint=true; the description earns credit for explaining why — the cell executes in a shared SAS Compute session whose WORK tables and macro variables persist and are visible to SQL Editor SAS runs and Python-in-SAS cells, and that sas_session_reset clears that state. It also discloses the asynchronous run_id/wait_ms/running pattern and the completion payload (error/warning counts, ODS output, log, status ok/error/aborted). It does not explain permission/auth requirements or what happens to prior session state on a failed run, and the S2/database sentence is too murky to count as disclosure.

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

Conciseness3/5

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

It is compact for the amount of ground covered and front-loads the core action, but the middle sentence is close to unreadable and mixes four ideas (shared session, queue, pre-warm, stop) in one clause. The return-value sentence at the end is well structured and worth its space; the S2/database sentence is not.

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

Completeness3/5

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

There is no output schema, and the description does step up by naming the return shape (outputs with error/warning counts, ODS output and log, plus status ok/error/aborted), which is a real contribution. For a 6-parameter async execution tool whose state is shared with other tools, however, source/notebook_id are undocumented and the database/connection mapping is left ambiguous, so an agent could still call it with the wrong connection or database.

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 0% across 6 parameters, so the description must carry the load. It partially does: run_id and wait_ms are deferred to notebook_sas_python, connection is covered by "default: the active one," and database gets a muddled note about the SingleStore S2 library ("the notebook's, only named in the note"). source and notebook_id are never addressed, and "running" is described as if it were a parameter when it is a return field, which can confuse the agent.

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 opening clause gives a specific verb and resource: run a SAS cell (DATA steps, PROCs, macro code) in the Workspace's SAS Compute session over the SAS Viya connection. It distinguishes itself from the local-kernel path ("Doesn't need a local kernel") and points at related siblings (notebook_sas_python, sas_session_reset, sas_stop). Clarity degrades in the middle sentence, which is grammatically tangled ("the session, queue, pre-warm and Stop (sas_stop) of the SQL Editor's SAS runs and the Python in SAS cells") and obscures what should be a clean statement of scope.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: use this for SAS code in a notebook, use notebook_sas_python_status to poll, use sas_session_reset to clear WORK tables and macro variables, use sas_stop to stop. That is real routing information, but there is no explicit when-to-use / when-not-to-use statement, and nothing tells the agent how this differs from notebook_run for non-SAS cells or from sas_execute for SQL Editor SAS runs.

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

Deploy Server

Other Tools