Skip to main content
Glama

data_create_datastore

Create a new datastore (PG-backed), optionally WITH its typed schema.

⚠️ A new table is born with NO column, and a write into a column the schema does not declare is REFUSED (unknown_column): its first write is refused until columns are declared. To create a table you are going to FILL, pass schema — the SAME object as data_set_schema ({"fields": [{"key": …, "type": …}], "key"?: …}, same closed vocabulary, same validation): the table is born with it, in ONE atomic call. If the schema is refused, the table is NOT created. That is the normal way to create a table you fill; without schema it is born free, and data_patch_schema(fields=[…]) declares columns later.

The table is PRIVATE: it belongs to you, and no one else can read it — not the other members of your org, not its admins. That is the default and it is never implicit (ADR 0068).

⚠️ It used to be owned by your ACTIVE ORG, readable by every member. To share a table with your org or a team, say so: the REST route takes owner: {type: "org"|"group", id: N}. Tables created before 2026-09-04 keep the owner they have.

⚠️ _org= does NOT change the owner. It decides which org you read and write under — never who owns what you create. Create a table under _org=N without an owner and it is still YOURS: every later call of yours keeps working, so nothing looks wrong. It shows up at the second agent, or at the colleague who cannot find the table and concludes it does not exist. The reply tells you the owner, and warns you in exactly that case.

A personal table is LISTED in your PERSONAL org, whatever org you create it under — data_list_datastores from any other org does not show it. Its number (ns_id) opens it from anywhere.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "datastore": "<datastore>"
    },
    "name": "data_create_datastore"
  }
}

Input Schema

NameRequiredDescriptionDefault
_orgNoOrg (id) de CET APPEL. `oto_list_orgs()`.
_groupNoÉquipe (id) de CET APPEL, sous son org parente.
schemaNooptional — the table's schema, the SAME object as `data_set_schema(schema=…)`. Omitted (or null) = a free table.
_run_idNoOBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas.
_projectNoProjet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`.
datastoreYeskebab-case identifier, unique per owner (e.g. `timetrack`).

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so extensively: it discloses that the table is private by default, that ownership is not changed by _org, that the table is listed only in the personal org, that the schema is applied atomically, and that a refused schema means no table is created. It also explains the unknown_column refusal and that the reply reports ownership. These are exactly the non-obvious behaviors an agent needs.

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?

The purpose and the most important warning are front-loaded in the first lines, and the paragraph breaks make the ownership rules scannable. It is longer than most tool descriptions and includes historical context about pre-2026-09-04 tables that an agent likely does not need for selection or invocation. Still, the length is largely justified by the complexity of ownership and schema atomicity.

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 six-parameter creation tool with no annotations and no output schema, the description covers the important gaps: ownership, visibility, listing behavior, atomic schema creation, failure modes, and where to go for later schema changes. The schema itself documents the remaining parameters at 100% coverage, so the combination is complete enough for 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 description coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that schema is the same object as data_set_schema with the same closed vocabulary and validation, and it clarifies that _org selects the read/write context but does not set ownership. One weakness is that the description discusses an owner setting available on "the REST route" even though no owner parameter appears in the tool schema, which could confuse an agent about whether it can set ownership here.

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 a specific verb and resource: "Create a new datastore (PG-backed), optionally WITH its typed schema." It clearly distinguishes creation from sibling operations by naming data_set_schema and data_patch_schema as the tools for later schema changes. An agent can tell exactly what this tool does 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 Guidelines5/5

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

It gives explicit when-to-use guidance: pass schema when you plan to fill the table, omit it for a free table, and use data_patch_schema(fields=[…]) to declare columns later. It also explains the consequence of creating without a schema and routes the agent to the right alternative. This is close to a complete decision rule.

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