MCP server

Connect your agent to https://rows.page/mcp. It pushes rows, pins findings, and hands you a link you can explore.

Connect

The server speaks streamable HTTP, so any MCP client that supports remote servers can use the URL. Pushing works without an account.

claude mcp add --transport http rows https://rows.page/mcp

Claude Desktop: Settings, Developer, Edit Config opens claude_desktop_config.json. mcp-remote needs Node.js. Cursor: .cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project.

With an API key

Anonymous pushes are deleted after 7 days unless someone keeps them. With an API key your agent pushes into your account, can use list_datasets, and re-pushes by key. Send the key as a bearer token or append ?apiKey= to the URL.

claude mcp add --transport http rows https://rows.page/mcp \
  --header "Authorization: Bearer rpk_..."

Create a key on your account page. It's shown once.

Tools

push
Push csv, tsv, json, jsonl, rows (array of objects) or a url, with optional title, summary, key, id_column, findings[] and provenance. Pass dataset + token for a new version. Returns the push response plus next steps for your human.
pin_finding
dataset, title, note, q, sort, cols, plus token without an API key.
get_dataset
Meta, versions, findings, columns and the first 20 rows.
list_datasets
Your datasets. Needs an API key.
delete_dataset
dataset, plus token without an API key.
get_limits
Your plan and its caps.

The tool descriptions teach the query language, so agents can write finding filters like status:failed latency_ms:>2000.

Prompting

Ask for the link and the findings in the same breath:

prompt
Push results.csv to rows.page with the title "Eval run 412".
Pin a finding for the failed rows with a one-line note on what they have in common,
then give me the link.

push answers with next steps that tell the agent to give you the owner link and mention when it expires, so you can keep it.