{
  "markdown": "<!-- mcp-name: io.github.RyanKramer/wisegrid-mcp -->\n\n# WiseGrid MCP\n\nRead and write [WiseGrid](https://wisegrid.co) sheets from Claude, Cursor, or\nany MCP client. List sheets, page through rows, add and update records, and run\nreports — from inside a conversation.\n\nUnlike the other servers in this family, these tools operate on **your real\ndata**, so an API key is required.\n\n## Install\n\n```json\n{\n  \"mcpServers\": {\n    \"wisegrid\": {\n      \"command\": \"uvx\",\n      \"args\": [\"wisegrid-mcp\"],\n      \"env\": {\n        \"WISEGRID_API_KEY\": \"wg_live_xxx\"\n      }\n    }\n  }\n}\n```\n\nOr `pip install wisegrid-mcp`.\n\n| Variable | Required | Purpose |\n|---|---|---|\n| `WISEGRID_API_KEY` | yes | Create one in WiseGrid under Settings |\n| `WISEGRID_BASE_URL` | no | Override for self-hosted instances |\n\nThe key's scopes decide what these tools can reach. Grant read-only scopes if\nyou only want the agent to look.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `whoami` | The key's identity, scopes and rate limit — call this first when debugging |\n| `list_sheets` | Sheets the key can see, cursor-paginated |\n| `get_sheet` | Sheet + columns + first page of rows, in one call |\n| `list_columns` | Column IDs, which cell dictionaries are keyed by |\n| `list_rows` | Rows, cursor-paginated; each carries the `version` you need to update it |\n| `add_rows` | Bulk insert, partial success, max 2000 |\n| `update_row` | Update one row's changed cells, version-checked |\n| `update_rows` | Bulk update, version-checked per row, max 2000 |\n| `delete_row` | Delete a row and its subtree — requires `confirm=True` |\n| `list_reports` / `get_report` / `run_report` | Reports and their rows |\n\n## Things that will bite you otherwise\n\n**Cells are keyed by column ID, not column name.** `{\"101\": \"Acme Corp\"}`, not\n`{\"Client\": \"Acme Corp\"}`. Call `get_sheet` or `list_columns` first.\n\n**Updates are version-checked.** Every row carries a `version`; you pass the one\nyou read, and if the row changed in the meantime you get `version_conflict`\ninstead of a silent overwrite. That is a normal outcome to handle — re-read the\nrow, decide whether your change still applies, then retry. Blindly bumping the\nversion to force the write is how concurrent edits disappear.\n\n**`update_row` merges, `update_rows` overwrites.** The single-row tool takes\nonly the cells you changed. The bulk tool replaces the row's cell set, so send\nthe full set you want the row to end up with.\n\n**`delete_row` takes the children too.** It removes the row and its entire\nsubtree, it is not undoable through the API, and it requires `confirm=True`\nfor exactly that reason. Read the rows first.\n\n**Writes are idempotent.** Each carries an `Idempotency-Key`, so a retry after a\ntimeout cannot double-apply. Rate limits are honoured via `Retry-After`.\n\n## Development\n\n```bash\ngit clone https://github.com/RyanKramer/wisegrid-mcp\ncd wisegrid-mcp\npip install -e .\nWISEGRID_API_KEY=wg_live_xxx wisegrid-mcp\n```\n\n## About\n\nBuilt by [WiseGrid](https://wisegrid.co). Full REST API reference at\n[wisegrid.co/docs/api](https://wisegrid.co/docs/api).\n\nMIT licensed.\n",
  "bytes": 3095,
  "sha": "7714f463c684d2090880e129ca3f5eb481e7e4d03c04db3af3f389a4aeee9996",
  "repo_slug": "ryankramer/wisegrid-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ryankramer_wisegrid_mcp_f8a1d5b8/readme"
}