Skip to main content
Glama

Fabrement

List blocks

fabrement-list-blocks
Read-only

List/search this project's blocks: id, name (the registered name other tools take), title, hasFiles (this site has the block's files; always false on installed:false rows — read importable there), type. Content blocks only by default; type "header"|"footer"|"all" for template parts. Paged (10, limit ≤25; read total/pages) — narrow with search or tags rather than scanning. Rows with installed:false are in the project but NOT on this site — install one with import-block rather than rebuilding it. availableTags lists every tag in use with counts: read it before tagging a block of your own. Rules: get-skill-doc {id:"block-discovery-contract"} — read it before the first call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-based. Default 1.
tagsNoKeep only blocks carrying ALL of these. Take the words from `availableTags` — a tag nobody used matches nothing.
typeNoWhich kind to list: "default" (content blocks, the default) | "header" | "footer" | "all".
limitNoBlocks per page (default 10). Values above 25 are capped, not refused — read `limit` in the response.
searchNoCase-insensitive substring over title, kebabName, pascalName, description and tags (e.g. "hero", "bizcor foot").
refreshNoAccepted for compatibility and has no effect: the project is always read fresh from the backend.
installedNotrue = only what is on this site; false = only what the project has and this site does not. Omit for both.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNoPage size actually used — a `limit` above the ceiling is clamped to it.
pagesNoMore than 1 means this response is partial. A `page` above it returns an empty list, not an error.
totalYesBlocks matching type + search across ALL pages.
blocksYes
projectSyncNo"ok" fresh from the backend; "unavailable" it did not answer — then this list is THIS SITE ONLY and says nothing about the project.
availableTagsNoEvery tag in use across the project for the `type` asked for (a header listing has the words headers carry), with how many blocks carry it. The site's own vocabulary — reuse these words when you tag a block, or the filter splits between "card" and "cards".
notInstalledCountNoHow many project blocks are not on this site, before any filter. Absent when projectSync is "unavailable" — nobody can count what they could not read.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint, so the description carries real weight and delivers: default page size of 10, a hard cap of 25 on limit (capped, not refused), semantics of installed:false rows ('in the project but NOT on this site'), the always-false hasFiles on those rows, and that `refresh` is a no-op. This is substantial behavior disclosure beyond the annotation.

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 the purpose and return shape, then constraints, then rules. Dense but every clause carries information; the one redundancy is restating that refresh has no effect, which the schema already says.

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?

An output schema exists so return values need not be explained, and the description still covers paging, filtering strategy, the installed vs. project distinction, tag vocabulary, and a pointer to the governing contract doc. Nothing an agent needs to call this correctly is missing.

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 100%, so the baseline is 3, but the description adds operational meaning: `name` is the registered name other tools take, `hasFiles` is unreliable on uninstalled rows, and `tags` values must come from `availableTags` or they match nothing. It slightly repeats the schema's `refresh` no-op note, keeping it short of a 5.

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 ('List/search this project's blocks') and immediately enumerates the returned fields (id, name, title, hasFiles, type). It carves out scope precisely: content blocks by default, template parts via type header/footer/all, which distinguishes it from siblings like list-content and list-templates.

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?

Gives explicit routing: narrow with `search`/`tags` rather than scanning paged results; rows with installed:false should be installed with import-block rather than rebuilt; read `availableTags` before tagging; and read the block-discovery-contract skill doc before the first call. When-to-use, when-not-to, and the alternative tool are all named.

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