Showboard
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| describe_dataA | List what you can read: the database tables and columns query_data can use (with estimated row counts), and the app's named data sources for use_source. Call it before writing SQL against tables you have not seen. |
| recipeA | Draw a ready-made board in one call: name a recipe and its values (lists as arrays). Use one whenever it fits the question; draw makes new kinds of boards. note puts your text at the top (quote only figures you have read); title replaces the recipe's. No recipes yet: draw with save_as adds one. |
| drawA | Draw a board on the user's screen in one call. items, in reading order:
|
| query_dataA | Run one read-only SQL SELECT against the app's SQLite database and keep the rows as a dataset named |
| show_boardA | The long form of draw: a json-render spec you wire yourself, for what draw cannot say. Pass only id to reopen a saved board. { "root": "", "elements": { "": { "type": "", "props": {…}, "children": ["", …] } } }, with the components listed under draw. Every number comes from a dataset (query_data or use_source): components take a dataset name and column names, and any other prop can read a cell with { "$state": "/data///" }. Do not type figures into props. In a Note, only quote figures you read from a dataset. Pass id (from an earlier board) to change that board in place. |
| list_boardsA | List saved boards, newest first. show_board with an id reopens one. |
| get_screenA | What the user's browser shows now: the page and app state the app publishes, the actions you can run with ui_act (with their inputs), any components the app adds for boards, and the board on screen. Call it before ui_act, and to see what the user is looking at. |
| ui_actB | Run one of the app's actions in the user's browser: open a page, set a filter, select something. get_screen lists the actions and their inputs. Returns what the action returned. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools map to a distinct action (introspect, query, list, inspect, act), but three tools — recipe, draw, show_board — all produce boards and their boundaries rest on soft guidance like 'the long form of draw' and 'use a recipe whenever it fits.' The descriptions mitigate the overlap well, but an agent still has to judge which board-authoring path applies.
The majority follow a verb_noun or verb-object pattern (describe_data, list_boards, query_data, show_board, get_screen, ui_act, though ui_act inverts to noun_verb). The bare names 'recipe' (a noun) and 'draw' (a bare verb) break the pattern and make the set feel mixed.
Eight tools is well within the sweet spot, and each one earns its place: data introspection, query, three tiers of board rendering, board listing, screen inspection, and browser action. Nothing feels redundant at the count level.
The core lifecycle is covered: describe data, query it, render a board (simple or full spec), save/list boards, and inspect/drive the app. Gaps are minor: there is no delete or rename for boards, no way to enumerate saved recipes or manage stored datasets, which agents can work around by reusing names.