Skip to main content
Glama

push

Publish rows as a rows.page dataset (or a new version of one) and get a shareable URL. Pass exactly one of csv, tsv, jsonl, json, rows or url. Up to 16 MB inline; use url for bigger files. Identical content returns unchanged: true without a new version. Re-pushes report rows_delta, columns_added/removed and a diff_url. Anonymous datasets expire after 7 days unless kept. Finding views use the rows.page query language in q: word or "two words" searches text columns; field:value, field:"a b", -field:value, field:* (not null), -field:* (null), field:foo* (prefix); field:>20, >=, <, <=, field:10..20, ISO dates (at:>2026-09-01); dot paths for nested JSON (payload.customer.country:NL); tags:urgent means the list contains it; combine with OR and parentheses. A q starting with SELECT, WITH or FROM runs as SQL against the table data. sort is comma-separated columns, - for descending (-price,name); cols picks and orders visible columns (a,b,c).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
csvNoCSV text with a header row
keyNoStable name for upserts with an API key, e.g. nightly-orders
runNoRun id of the job that produced it
tsvNoTSV text with a header row
urlNohttp(s) URL of a CSV, TSV, JSON, JSONL or Parquet file to fetch and publish
jsonNoA JSON array of objects (or an object holding one), as text or as a value
nameNoFile name, e.g. orders.csv
rowsNoRows as an array of objects
jsonlNoOne JSON object per line
titleNoDataset title shown on the page
tokenNoDataset token (rpt_...) proving ownership of dataset
commitNoCommit sha of the code that produced it
formatNoFormat of url when it cannot be told
sourceNoWhere the data came from (URL or description)
datasetNoExisting dataset id to push a new version to
summaryNoA few sentences for the human: what this is and what to look at
findingsNo
id_columnNoColumn that identifies a row across versions, for changed-row diffs
visibilityNoprivate needs Pro or Max

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?

With no annotations, the description carries the full behavioral burden and does well: 16 MB inline limit, idempotency ('identical content returns unchanged: true'), re-push diff reporting (rows_delta, columns_added/removed, diff_url) and 7-day anonymous expiry. It omits explicit auth/permission requirements and rate-limit/error behavior, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded correctly, beginning with purpose and the exactly-one-input rule. However, the bulk of the text is a dense query-language reference appended to a publish tool, which reads as documentation better placed elsewhere and inflates the description considerably.

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?

For a 19-parameter, no-output-schema, no-annotation tool, it covers most of what an agent needs: input exclusivity, size limit, idempotency, diff output fields and expiry semantics. Remaining gaps (auth requirements, failure modes) are modest given the extensive behavior already disclosed.

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 95%, so the baseline is 3 and the schema already documents all 19 parameters. The description adds real value beyond the schema by spelling out the rows.page query-language grammar for q, and the sort/cols syntax. It stops short of 5 because those additions don't change how a caller fills the remaining scalar params.

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?

The opening states a specific verb+resource+outcome: 'Publish rows as a rows.page dataset (or a new version of one) and get a shareable URL.' This lets an agent separate it from the read/list siblings. It never names a sibling alternative (e.g. get_dataset for retrieval), so it stops short of full differentiation.

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?

Rich within-tool guidance: 'Pass exactly one of csv, tsv, jsonl, json, rows or url' and 'use url for bigger files' tells the agent how to select inputs and when a format is preferred. It gives no explicit when-to-use-vs-alternative framing against delete_dataset/get_dataset, so it is context without exclusions.

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