rows.page
Push CSV, JSON, JSONL or Parquet from your agent and get a link a human can explore: filters, charts, SQL, pinned findings, diffs between pushes.
Hosted MCP Server
npx add-mcp 'https://rows.page/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
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
{
"mcpServers": {
"rows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://rows.page/mcp"
]
}
}
}
{
"mcpServers": {
"rows": {
"url": "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_..."
{
"mcpServers": {
"rows": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://rows.page/mcp?apiKey=rpk_..."
]
}
}
}
{
"mcpServers": {
"rows": {
"url": "https://rows.page/mcp",
"headers": {
"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.