Skip to main content
Glama

List canvas frames on a page

list_canvas_frames
Read-onlyIdempotent

Inventory active frames visible on one page/branch. Rows include name, kind, componentName, render status/error, board rect/renderSize/order, import relationships, originating comment thread, originKind, own/parent/unprojected provenance, theme (layout, picked or automatic, and mode), lastEdit and openCommentThreads; the envelope names the project default theme (defaultThemeLayout). Default sorting is newest edit first; layout sorting follows z-order. Deleted frames are absent. There is no separate server-side hidden/collapsed frame state. Scope: project:read.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "list_canvas_frames"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMax frames to return. Default 50; `complete: false` says when a page has more.
sortByNo`recent` (default): most recently edited first, so the head of the list is 'the frames being worked on'. `layout`: ascending z-order, so array neighbours are stack neighbours.
branchIdNoTarget branch id. Omit it — Bloom derives the branch from the frames you name, from the token's narrowing, or from your only readable branch, and enumerates the candidates if it genuinely cannot.
canvasPageIdNoPage to inventory. Omit when the branch's project has one page; otherwise pass the `canvasPageId` from `get_user_selection` (the page the human is looking at), `list_canvas_pages`, or any result that echoed one. MCP_PAGE_AMBIGUOUS enumerates the candidates.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioral context beyond them: default sort order, z-order semantics for layout sort, absence of deleted frames, no server-side hidden state, the envelope's defaultThemeLayout, and the complete:false truncation signal. It stops short of describing pagination mechanics or rate limits, so not a 5.

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?

Purpose is front-loaded in the first clause, and the dense field enumeration earns its place because there is no output schema. The middle sentence is a long semicolon-chained list that is heavy to parse but not padded with filler.

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

Completeness4/5

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

With no output schema, the description compensates by enumerating returned fields, provenance, theme, and the envelope's defaultThemeLayout, and it covers sorting, truncation, and auth scope. It is close to complete for a read-only list tool; only pagination mechanics are left implicit.

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 coverage is 100%, so the schema already documents all four parameters thoroughly, including the sortBy enum semantics and the branchId/canvasPageId omission rules. The description's sorting note largely restates the schema, so it adds little beyond the baseline.

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 ('Inventory active frames visible on one page/branch') with clear scope, and the field inventory makes it distinguishable from read_frame_state (single frame) and browse_frame (navigation). An agent can tell what it returns 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 Guidelines3/5

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

It gives useful context — deleted frames are absent, there is no hidden/collapsed state, and scope is project:read — plus a pointer to get_user_selection/list_canvas_pages for the page id. However, it never explicitly says when to choose this over siblings like read_frame_state or list_recent_canvas_changes, so the when-to-use decision is only implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources