Skip to main content
Glama
logisky

logisheets-mcp

describe_block

Read-only

Get a block's full schema: field types, descriptions, formulas, validation, and row keys, plus optional current values. Use it to learn a block's structure and constraints before writing to it.

Instructions

Return a block's full structure for the LLM: identity (name, sheet, position), per-field schema, and row keys in order. Every field reports both what it IS — type, description, required, unique, default_value, and references for a field pointing at another block — and what currently guards it: the value_formula, validation and editability templates. All of it comes from the Rust schema, the engine's authoritative source, so the answer is the same in every host and survives a save/load.

Read a field's type and description BEFORE writing a value to it: the description is where the unit, the convention, or the thing-not-to-do is written down, and it is the only record of it. A type of null means nobody has claimed one yet.

analyzes and analyzed_by say whether this block is a table or a conclusion drawn from one. A block with analyzes set is an ANALYSIS block — a total row, a set of statistics, a pivot — and its rows are its own, not the source's. Never sum an analysis block alongside the block it analyses: that counts the same numbers twice. A field with aggregates set is engine-computed from the source; writes to it are dropped, and you change it by changing the declaration.

Pass include_rows: true to additionally include current cell values as rows[].values[fieldName]. Off by default to save tokens — use it when the agent actually needs to inspect data, not when it only needs the shape.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesBlock ref name (the `name` of create_block).
include_rowsNoWhen true, include current cell values. Off by default to save tokens.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

The annotations already mark this as read-only and non-destructive, and the description adds substantial behavioral context: results come from the authoritative Rust schema and survive save/load, analysis blocks must not be summed with their sources, and writes to aggregate fields are dropped. This goes well beyond the structured annotations and genuinely informs agent behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but every sentence carries distinct, actionable information: purpose, schema semantics, analysis-block warnings, aggregate behavior, and token-saving guidance. The purpose is front-loaded in the first sentence, and the rest is organized into readable thematic paragraphs with no filler.

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?

With no output schema present, the description fully covers what the tool returns, including identity fields, per-field guards, row keys, analysis relationships, and the optional rows payload. It also covers caveats an agent needs to avoid double-counting or attempting writes to computed fields, so the description is complete for safe and correct invocation.

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%, so the baseline is 3, but the description adds real value by explaining the output relation of include_rows ('rows[].values[fieldName]') and by clarifying that 'name' is the block ref name from create_block. It enriches both parameters without repeating much schema text.

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 begins with a specific verb and resource: 'Return a block's full structure'. It spells out exactly what that structure contains (identity, per-field schema, row keys), which separates it from list-like siblings such as list_blocks or get_cells. The resource and scope are unambiguous.

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 clear practical guidance: read type and description before writing, and pass include_rows only when data values are needed rather than just shape. It does not explicitly name alternative tools or state when not to use describe_block, but the context is strong enough for an agent to decide correctly.

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