Skip to main content
Glama
rubrikinc

Rubrik MCP

Official
by rubrikinc

rsc_execute_operation

Read-only

Execute raw GraphQL queries against Rubrik Security Cloud's live API to retrieve security data. Supports read-only operations only.

Instructions

Execute a raw GraphQL query against the live RSC API.

This tool supports queries only. Mutations are not available via raw GraphQL — use built-in tools (rsc_take_on_demand_snapshot, etc.) for supported write operations. If you submit a mutation, this tool returns a mutation_blocked error with the attempted operation so Claude can generate a Python code sample for you.

IMPORTANT: Write operation as a single line with no newlines or extra whitespace. Multi-line strings appear as ugly \n escape sequences in the tool call display. Good: "query { nodes { id name } }"

Requires RSC credentials — set one of:

  • RSC_SERVICE_ACCOUNT_FILE env var (path to service account JSON)

  • RSC_URL + RSC_CLIENT_ID + RSC_CLIENT_SECRET env vars

  • ~/.rsc/config.json

Args: operation: A complete GraphQL query string on a single line, e.g.: "query { accountId }" "query ListSLAs($after: String) { slaDomains(after: $after) { count nodes { id name } pageInfo { hasNextPage endCursor } } }" variables: Optional dict of variable values for parameterized operations.

Returns: The raw JSON response from the RSC GraphQL API (data + errors if any). Returns {"error": "mutation_blocked", "blocked_operation": "...", "message": "..."} if a mutation is submitted — Claude will use this to generate a Python code sample.

Note: returns the raw GraphQL response with no field filtering or redaction — do not use in contexts where data minimization of personal-data-bearing fields is required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYes
variablesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is fully consistent while adding substantial context beyond them: the mutation_blocked error contract, three credential-source options, the single-line formatting requirement, and an explicit data-minimization caveat that raw responses are unfiltered. That is well past what the annotations carry.

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?

Front-loaded with purpose and the mutation restriction, then credentials, args, and return shape in clear blocks. Slight redundancy: the mutation_blocked result is explained at the top and again in the Returns section, and the no-newlines warning is verbose for its importance.

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

Completeness5/5

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

For a two-param, no-output-schema tool this covers everything an agent needs: what it does, what it refuses, how to authenticate, how to format input, and the shape of both success and error responses, including the raw/unredacted caveat.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the full burden, and it does: 'operation' gets format rules plus two worked GraphQL examples, and 'variables' is explained as a dict of values for parameterized operations. It loses a point only because variable-to-placeholder binding isn't illustrated with a concrete example.

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

Purpose5/5

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

States a specific verb and resource ('Execute a raw GraphQL query against the live RSC API') and immediately scopes it to queries-only, which is what separates it from the built-in write tools like rsc_take_on_demand_snapshot. An agent can identify the tool without opening the schema.

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?

Explicitly states when not to use it (mutations are unavailable via raw GraphQL) and names the alternative path ('use built-in tools (rsc_take_on_demand_snapshot, etc.) for supported write operations'). The mutation_blocked fallback behavior is also described, so the agent knows what happens on misuse.

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