Skip to main content
Glama
rawtreedb

RawTree MCP Server

Official
by rawtreedb

Create Table

create-table
Idempotent

Purpose: Create an empty RawTree table in a database.

Instructions

Purpose: Create an empty RawTree table in a database.

Returns: The database and table names, the resolved storage destination, and the table's sorting key.

Behavior: The table uses the database's storage when the database configures one, and the cluster's default storage otherwise. Storage is configured on the cluster or the database, never per table.

Sorting key: sortingKey is an optional string of comma-separated SQL expressions. Omit it and the table picks a sorting key per part from the ingested data, which suits exploratory tables. Set it when the query pattern is known, listing expressions in key order, lowest cardinality first. Use update-table to change it later.

Auth: Requires organization admin access. Authorization is enforced by the RawTree API.

Reliability: If the response is ambiguous, call list-tables to reconcile by database and table name before retrying.

Input Schema

NameRequiredDescriptionDefault
nameYesName of the table to create.
clusterNoRawTree cluster to use for this operation.
databaseNoOptional RawTree database override. RawTree uses the default database when omitted.
sortingKeyNoOptional comma-separated SQL sorting expressions in key order. Omit it to let the table pick a key per part from the ingested data.
organizationNoRawTree organization containing the target cluster.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.4.2
    • removedInput schema / properties / s3Storage
      Removed value: -{
      -  "description": "Optional per-table S3 override. Omit to inherit the database or cluster's default storage.",
      -  "properties": {
      -    "backups": {
      -      "description": "Customer-owned bucket and optional key prefix for backups.",
      -      "properties": {
      -        "bucket": {
      -          "maxLength": 63,
      -          "minLength": 3,
      -          "type": "string"
      -        },
      -        "path": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "bucket"
      -      ],
      -      "type": "object"
      -    },
      -    "data": {
      -      "description": "Customer-owned bucket and optional key prefix for data.",
      -      "properties": {
      -        "bucket": {
      -          "maxLength": 63,
      -          "minLength": 3,
      -          "type": "string"
      -        },
      -        "path": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "bucket"
      -      ],
      -      "type": "object"
      -    },
      -    "externalId": {
      -      "description": "External ID required by the IAM role trust policy. It must exactly match the value configured in AWS.",
      -      "maxLength": 1224,
      -      "minLength": 2,
      -      "pattern": "^[A-Za-z0-9_+=,.@:/-]+$",
      -      "type": "string"
      -    },
      -    "roleArn": {
      -      "description": "ARN of the customer IAM role that RawTree may assume to access the configured buckets.",
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "data",
      -    "backups",
      -    "roleArn",
      -    "externalId"
      -  ],
      -  "type": "object"
      -}
    • addedInput schema / properties / sortingKey
      Added value: +{
      +  "description": "Optional comma-separated SQL sorting expressions in key order. Omit it to let the table pick a key per part from the ingested data.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  2. Addedv0.3.2

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) by disclosing storage resolution (database storage if configured, otherwise cluster default, never per-table), stating that the auth requirement is organization admin, and giving explicit ambiguous-response recovery via list-tables. That is exactly the extra context annotations cannot carry.

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?

Uses front-loaded bold headers (Purpose, Returns, Behavior, Sorting key, Auth, Reliability) so an agent can scan to the relevant section. Each section carries information an agent needs when calling the tool, including the Returns section, which compensates for the missing output schema, and there is 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?

For a 5-parameter creation tool with no output schema, the definition covers what is created, what is returned, how storage is resolved, how the sorting key is chosen and later changed, the auth level required, and how to recover from an ambiguous response. Nothing material 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 coverage is 100%, so the baseline is 3, but the description adds real meaning to sortingKey: the comma-separated SQL expression format, ordering with lowest cardinality first, and the omit-vs-set trade-off. It also clarifies that the storage relationship is between the cluster and the database, not per table. It adds nothing beyond the schema for name, organization, and cluster.

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 with scope: 'Create an empty RawTree table in a database.' That is unambiguous against siblings like create-database, create-cluster, and create-connector, which target different resources.

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?

Gives conditional guidance for the optional sortingKey (omit for exploratory tables, set when the query pattern is known) and routes to a named sibling: 'Use update-table to change it later.' It also gives a recovery path via list-tables. It does not say when not to create a table (for example, when one already exists), so it falls short of a full 5.

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