Skip to main content
Glama

Create Items

item.create_many

Create many rows (items) in one sheet in ONE call — use it instead of repeated item.create_humanized whenever you add more than one row (e.g. "add these 50 leads" from a pasted list). Each row is a fields map of attribute name → HUMAN VALUE, resolved exactly as item.create_humanized does. Up to 200 rows per call; for more, make several calls. A row whose value cannot be resolved, or that matches an existing row by a unique field, is skipped with a reason and the rest are created. Workflows on the sheet run for every created row, as for a row added by hand. The whole call is one batch: item.undo_batch with the returned batchId and sheetId removes every row it created. Returns { batchId, created, skipped, skippedCount, url } — tell the user the counts and the skip reasons.

Input Schema

NameRequiredDescriptionDefault
rowsYesThe rows to create, 1–200; split a longer list into several calls
sheetIdYes

Output Schema

NameRequiredDescriptionDefault
urlYesPanel link to the sheet
batchIdYesId of the batch; pass it with sheetId to item.undo_batch to undo the whole batch. Null when nothing was written
createdYesRows created
sheetIdYesSheet the rows are in
skippedYesRows left unchanged and why; at most 20 are listed
spaceIdYesSpace of that sheet; null for a sheet outside a space
stoppedNoSet when a row failed unexpectedly: rows after it were not attempted; the rest stay written
updatedYesRows updated
skippedCountYesAll rows skipped, including ones not listed

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / batchId / description
      Previous value: -"Id of the batch; pass it to item.undo_batch to undo the whole batch. Null when nothing was written"New value: +"Id of the batch; pass it with sheetId to item.undo_batch to undo the whole batch. Null when nothing was written"
  2. Changed4 schema fields changed
    • removedOutput schema / properties / batchId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / batchId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / spaceId / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / spaceId / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  3. Changed3 schema fields changed
    • addedOutput schema / properties / sheetId
      Added value: +{
      +  "description": "Sheet the rows are in",
      +  "type": "number"
      +}
    • addedOutput schema / properties / spaceId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Space of that sheet; null for a sheet outside a space"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "batchId",
      -  "created",
      -  "updated",
      -  "skipped",
      -  "skippedCount",
      -  "url"
      -]New value: +[
      +  "batchId",
      +  "created",
      +  "updated",
      +  "skipped",
      +  "skippedCount",
      +  "url",
      +  "sheetId",
      +  "spaceId"
      +]
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses partial-failure semantics (unresolvable or unique-field-duplicate rows are skipped with a reason while the rest are created), side effects (workflows run per created row), and reversibility (item.undo_batch with the returned batchId and sheetId removes every row). That is exactly the mutation context annotations alone cannot convey.

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?

Front-loads the one-call bulk purpose, then limits, then failure semantics, then side effects, then undo, then return contract. Dense but every sentence carries operational information an agent needs before calling.

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 mutation-capable bulk tool, the description covers limits, resolution behavior, skip handling, workflow side effects, undo path, and even instructs the agent to report created/skipped counts and reasons. Nothing needed to call it safely and 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 coverage is 50%, but the description adds real meaning: rows are `fields` maps of attribute name to human value 'resolved exactly as item.create_humanized does', which tells the agent values are human-readable and auto-resolved. It also names batchId and sheetId as the undo inputs. sheetId's meaning is only implied by 'one sheet'.

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 ('Create many rows (items) in one sheet in ONE call') and immediately distinguishes itself from the sibling it replaces, item.create_humanized. An agent can identify the tool and its scope 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?

Explicit routing rule: use this instead of repeated item.create_humanized whenever adding more than one row, with a concrete example ('add these 50 leads'). It also gives the threshold at which to split into multiple calls (over 200 rows), covering the when-not case.

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