Skip to main content
Glama

roam_create_table

Create structured tables in Roam by providing headers and rows. Automates the complex nested block structure, ensuring valid formatting and reducing manual errors.

Instructions

Create a table in Roam with specified headers and rows. This tool abstracts the complex nested structure that Roam tables require, making it much easier to create properly formatted tables.

Why use this tool:

  • Roam tables require precise nested block structures that are error-prone to create manually

  • Automatically handles the {{[[table]]}} container and nested column structure

  • Validates row/column consistency before execution

  • Converts empty cells to spaces (required by Roam)

Example: A table with headers ["", "Column A", "Column B"] and rows [{label: "Row 1", cells: ["A1", "B1"]}] creates a 2x3 table.

IMPORTANT: call roam_get_guidelines for this graph once per session, and load the Roam Markdown Cheatsheet, before using this tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsYesData rows for the table. Each row has a label (first column) and cells (remaining columns).
graphNoTarget graph key from ROAM_GRAPHS config. Defaults to ROAM_DEFAULT_GRAPH. Only needed in multi-graph mode.
orderNoOptional: Position under the parent. Can be a number (0-based) or "first"/"last". Defaults to "last".last
headersYesColumn headers for the table. The first header is typically empty (for the row label column). Example: ["", "Option A", "Option B"]
write_keyNoWrite confirmation key. Required for write operations on non-default graphs when write_key is configured.
parent_uidYesThe UID of the parent block or page where the table should be created.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent only when success is false.
successYes
uid_mapNoPlaceholder name → generated UID. Present only on success.
table_uidNo
actions_attemptedNo
validation_passedNo
Behavior4/5

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

Annotations indicate a write operation (readOnlyHint: false) but provide limited safety info. The description adds valuable context: it automatically handles the {{[[table]]}} container, validates row/column consistency, and converts empty cells to spaces. It also mentions the session prerequisite, giving the agent important operational details beyond the structured annotations.

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 well-structured and front-loaded with the core action. The 'Why use this tool' bullets are concise and purposeful, the example is helpful, and the IMPORTANT note is relevant. No sentence is wasted.

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?

Given the tool's complexity (6 params), the description provides purpose, rationale, an example, and a prerequisite. The output schema exists, so return-value details are not necessary. It lacks explicit edge-case handling but is complete enough for an agent to use effectively.

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 description coverage is 100%, so the schema already documents all parameters. The description's example adds a concrete illustration of how headers and rows map to a table, but it does not add significant new semantics beyond what the schema provides. Baseline of 3 is appropriate.

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 opens with 'Create a table in Roam with specified headers and rows,' which is a specific verb+resource statement that clearly distinguishes this tool from siblings like roam_create_outline or roam_create_page. It also explains the tool abstracts Roam's complex nested table structure, reinforcing its unique purpose.

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 'Why use this tool' section explicitly states when this tool is beneficial (avoiding error-prone manual creation, handling table containers, validating consistency). It also provides a clear prerequisite: call roam_get_guidelines and load the Markdown Cheatsheet before use. However, it does not explicitly name alternatives or state when not to use it, though the context is clear.

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/2b3pro/roam-research-mcp'

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