Skip to main content
Glama

Sergio by Serviche

Upload a spreadsheet to import

upload_spreadsheet
Idempotent

Uploads a bookings or clients spreadsheet (CSV text) and queues its import, as Upload on the Imports page does; nothing is written to customers until its columns are checked. source is the import source spelling, not a free label: a booking platform's key for its bookings export (for example bookingkoala), that key plus -clients for its clients export (for example bookingkoala-clients), or spreadsheet / spreadsheet-clients for a generic spreadsheet export. read('data_sources') names this business's platform. Returns jobId. Pass the same idempotency_key when retrying. An owner-level change: Sergio tells the owner after it is made.

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": {
      "source": "<source>",
      "csv": "<csv>",
      "idempotency_key": "<idempotency_key>"
    },
    "name": "upload_spreadsheet"
  }
}

Input Schema

NameRequiredDescriptionDefault
csvYes
reasonNoWhy you are doing this, in one sentence. The owner sees it in the notice Sergio sends after the change.
sourceYes
idempotency_keyYesYour id for this operation (8-128 of A-Z a-z 0-9 . _ : -). Reuse it on every retry of the same operation; use a new one for a new operation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare write, idempotent, non-destructive, closed-world, so the bar is lower, yet the description adds substantive behavior: the import is only queued and nothing reaches customers until columns are checked, it returns jobId, the same idempotency_key must be reused on retries, and it is an owner-level change that triggers an owner notice from Sergio. Missing only what happens after jobId (mapping review) and any failure modes.

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-loaded with the action and its safety property, then walks through source semantics, return value, idempotency and side effect in a compact sequence. Dense but every clause carries information; nothing is redundant with annotations or schema.

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?

No output schema exists, and the description supplies the return value (jobId) plus the key behavioral caveat about deferred writes. It could be stronger by naming the mapping/review step that must follow the queued job and by clarifying the relationship to start_spreadsheet_import, but it is otherwise sufficient to call the tool correctly.

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% and the two undocumented params are the important ones, but the description fully compensates for source by enumerating valid spellings (platform key, key plus -clients, spreadsheet/spreadsheet-clients) and forbidding free labels. It also identifies csv as CSV text. It adds nothing about reason, which the schema already covers, so it does not exceed the schema where the schema already does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Uploads a bookings or clients spreadsheet (CSV text) and queues its import') and pins down the effect precisely ('nothing is written to customers until its columns are checked'). It does not name the obvious sibling start_spreadsheet_import or review_import_mapping, so the boundary with those is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Gives real operational guidance — use it as the Imports page Upload does, and call read('data_sources') to learn the platform key before choosing source. However it never states when to prefer this over the near-identical sibling start_spreadsheet_import, nor what the follow-up step (column checking / mapping review) is, leaving the agent to infer the workflow.

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