Skip to main content
Glama
openl-tablets

OpenL MCP Server

Official

Read / Replace Breakpoints

openl_set_trace_breakpoints

Set, replace, or clear trace breakpoints to pause rule execution at exact tables, spreadsheet cells, or rule firings. Optionally break on the N-th execution for conditional debugging.

Instructions

Read the active breakpoint keys and the available targets (rule tables, deduplicated by name; with an active session only tables reachable from the traced one). When 'set' is provided it REPLACES the whole set first (empty array clears all). Key forms: '' stops at entry of every same-named table version; '' at that exact table (uri from frames[].uri); '#R{r}C{c}' at a spreadsheet cell; '#rule' when ANY rule of that decision table fires; '#' when a specific rule fires (rule names from openl_inspect_trace_frame ruleNames/decision). Append '@N' to any key to break only on the table's N-th execution (0-based) — e.g. '#R48C0@3'; without it a cell breakpoint hits every pass of a table that runs many times (one per coverage/iteration). N matches frames[].instance and the 'instance' of an openl_watch_trace_cells series, so a watch outlier at instance 3 is reached with '@3'. Works without a session — set breakpoints before openl_start_trace; changes during a session apply at the next frame enter or line change.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
setNoWhen provided, REPLACES the whole breakpoint set (empty array clears all). Key forms: '<name>' (entry of any same-named table), '<uri>' (entry of that table), '<uri>#R{r}C{c}' (spreadsheet cell), '<uri>#rule' (any decision-table rule fires), '<uri>#<ruleName>' (specific rule fires). Append '@N' to any key to break only on the table's N-th execution (0-based, matching frames[].instance and a watch series' instance) — e.g. '<uri>#R48C0@3'. Omit to just read the current set and available targets.
projectIdYesProject ID returned by backend. Use the exact 'projectId' value from openl_list_projects() response without modification or reformatting.
response_formatNoResponse format: 'json' for structured, round-trippable data (default), 'markdown' for human-readable output, 'markdown_concise' for a brief summary (1-2 paragraphs), or 'markdown_detailed' for full details with contextjson
Behavior5/5

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

Beyond the openWorldHint annotation, the description discloses replacement semantics, empty-array clearing, sessionless operation, session-dependent target filtering, and instance-matching behavior. This is rich behavioral context that significantly helps an agent predict side effects.

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?

The description is long but dense, front-loading the primary read/replace behavior before detailing key forms. Every section serves a purpose, though some key-form syntax is duplicated from the schema. This is acceptable for a complex tool.

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?

The description covers return values (active keys and available targets), replacement behavior, key forms, instance matching, and session timing. With no output schema, this is sufficient for an agent to invoke the tool correctly and interpret its result.

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 coverage is 100% and the schema descriptions are already detailed. The description adds non-redundant semantics around '@N' matching frames[].instance and watch-series instances, plus timing of breakpoint changes. The repetition of key-form syntax is somewhat redundant but reinforces understanding.

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?

The description clearly states the verb-resource pair: read active breakpoint keys/targets and replace the whole breakpoint set when 'set' is provided. This distinguishes it from trace-control siblings like start/stop/step/resume trace.

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

Usage Guidelines4/5

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

The description gives concrete timing guidance: breakpoints can be set before a session, and changes during a session apply at the next frame enter or line change. It also explains the '@N' instance semantics relative to related tools like openl_watch_trace_cells. It does not explicitly name alternatives to prefer instead, but the tool is unique among siblings.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/openl-tablets/openl-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server