Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_cubesA

Search the DataSaudi catalog of 277 statistical cubes.

Returns an ENVELOPE (not a bare list): {query, scope, total_matches, returned, catalog_size (277), complete, results, note}. results holds compact {name, caption, domain} hits. total_matches is the TRUE number of matching cubes; when complete is true, results contains ALL of them - there is no hidden cap. Never infer a result ceiling from len(results): read total_matches and complete. When complete is false the result is a page - refine the query or pass offset (the next start index, from the note) to page through the rest.

scope: 'catalog' (title/topic), 'measures' (measure names), or 'levels' (drillable level names - NOT member values; 'members' is an alias). locale='ar' also matches the Arabic catalog annotations (topic/subtopic/source); cube names/captions themselves are English only. An empty query returns a labeled preview (first 25 of 277). A space-separated query that finds nothing is retried once with spaces replaced by underscores.

describe_cubeA

Introspect one cube: its drillable level names and measures. Pass level to also list that level's members. locale ('en' or 'ar') controls the language of the returned member captions (e.g. locale='ar' -> 'الرياض' instead of 'Al-Riyadh'); the level/measure NAMES stay as-is since query_cube matches them literally. Unknown cube -> error with 'did you mean'.

query_cubeA

Query a cube by drilldowns (level names) + measures; returns a compact, paginated result with the resolved query echoed back.

cut filters by member: a {level: member_id} mapping, e.g. {"Province": "1"} to keep only that province. Use the member ID (from describe_cube(cube, level=...)), NOT its caption. locale ('en' or 'ar') sets the language of member captions in the result rows (e.g. 'الرياض' vs 'Al-Riyadh'); member IDs and numbers are unaffected. Validates level/measure names AND cut level names locally and fails loud with the valid options.

limit: max rows per call (default 100), HARD-CAPPED at 5000. A larger value is silently reduced to 5000 - the tool will NOT return an unbounded result, because a single result over ~1MB is rejected outright by the client (no partial data comes back). THERE IS NO 'get everything in one call'. To get more than one page, do NOT raise limit: page with offset (the note gives you the next offset; repeat until complete), OR narrow with a cut / fewer drilldowns. Paging or narrowing is the intended path and is faster than one giant call that errors. offset: start row of this page (default 0). When combining pages, only sum additive measures (counts/sums); never average an index or ratio across pages.

Note: a cut on a valid level but nonexistent member returns 0 rows (reported as 'valid query, no matching data'), not an error - check the member id if you expected rows.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: describe_cube for metadata of a specific cube, list_cubes for searching the catalog, and query_cube for fetching data. There is no overlap or ambiguity in their functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: describe_cube, list_cubes, query_cube. This is perfectly regular and predictable.

Tool Count4/5

Three tools is appropriate for a focused data catalog server covering discovery, schema exploration, and data retrieval. While minimal, each tool earns its place and the set feels complete.

Completeness5/5

The tool set fully covers the main workflows: listing cubes, describing their structure, and querying with drilldowns and measures. Pagination and filtering are well addressed through parameters, leaving no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues