Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.oborchers/tablestakes

PYPI · TABLESTAKES · SCANNED SEP 20

Read and edit HTML/Markdown tables in GitBook-synced documents via MCP tools.

Available components

+15 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 1 of 19 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
Schema Quality & AI Usability72
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2092 tokens (~190/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_row" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.oborchers/tablestakes MCP server?

io.github.oborchers/tablestakes runs locally as a PyPI package, launched with uvx tablestakes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · tablestakes

# add to Claude Code
claude mcp add oborchers-tablestakes -- uvx tablestakes
// .cursor/mcp.json
{
  "mcpServers": {
    "oborchers-tablestakes": {
      "command": "uvx",
      "args": [
        "tablestakes"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "oborchers-tablestakes": {
      "command": "uvx",
      "args": [
        "tablestakes"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add oborchers-tablestakes -- uvx tablestakes
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "oborchers-tablestakes": {
      "type": "local",
      "command": [
        "uvx",
        "tablestakes"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add oborchers-tablestakes --command uvx --arg tablestakes
# ~/.hermes/config.yaml
mcp_servers:
  oborchers-tablestakes:
    command: "uvx"
    args: ["tablestakes"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "oborchers-tablestakes": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "tablestakes"
      ]
    }
  }
}
# add to Vellum
assistant mcp add oborchers-tablestakes -t stdio -c uvx -a tablestakes
// mcp.json
{
  "mcpServers": {
    "oborchers-tablestakes": {
      "command": "uvx",
      "args": [
        "tablestakes"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +16
    • Malware scan: unverified → pass security
  • 18 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 17 Sept 26 0
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 10 Sept 26 0
    • Stability: 0.97 → pass security
  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/tablestakes@1.1.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 19 packages
Packages resolved 19
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 11 exposed · ~1,825 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
create_table ~240

Create a new table in a Markdown file. Provide content as a pipe table. The table is written in the specified format: "html" (default, collapsed single-line HTML suitable for GitBook) or "pipe" (GFM pipe table). No version hash needed — this creates, not edits. On success returns `v:{hash}` of the new table. Use this hash with read_table and write tools to edit the table immediately. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
contentstringyesTable in pipe format (header row + delimiter + data rows). Example: "| Name | Age |\n| --- | --- |\n| Alice | 30 |"
file_pathstringyesAbsolute path to the Markdown file. Created if it doesn't exist.
formatstring"html" (default) or "pipe". HTML produces collapsed single-line GitBook-compatible output. GitBook will auto-add width/data-* attributes on sync.
positioninteger1-based line number to insert AFTER. -1 appends (default). 0 inserts at top.

No output schema declared.

No examples provided.

delete_column ~116

Delete a column. Requires version hash from read_table. On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
columnstringyesColumn letter ("A"), name ("Priority"), or composite ("B:Priority").
file_pathstringyesAbsolute path to the Markdown file.
table_indexintegeryes0-based table index from list_tables.
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

delete_row ~116

Delete a row. Requires version hash from read_table. On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
row_indexintegeryes0-based data row index to delete (header row is NOT counted).
table_indexintegeryes0-based table index from list_tables.
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

insert_column ~164

Insert a new column. Requires version hash from read_table. All existing rows are populated with default_value (empty string if omitted). On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
default_valuestringValue for all existing rows (default: empty string).
file_pathstringyesAbsolute path to the Markdown file.
namestringyesHeader text for the new column.
positioninteger0-based column index for insertion. -1 appends to the right (default).
table_indexintegeryes0-based table index from list_tables.
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

insert_row ~193

Insert a new row. Requires version hash from read_table. Provide values as a dict mapping column identifiers to cell content. Column identifiers: letter ("A"), name ("Priority"), or composite ("B:Priority"). Omitted columns default to empty string. On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
positionintegeryes0-based row index for insertion. Use -1 to append at the end.
table_indexintegeryes0-based table index from list_tables.
valuesobjectyesDict mapping column identifiers to cell values. Example: {"Name": "Alice", "B": "30", "C:City": "NYC"}
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

list_tables ~94

List all tables in a Markdown file with column descriptors and row previews. Prefer this over grep for discovering table structure — returns column names, row counts, formats, and version hashes. Use search_tables to find specific data across tables.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
preview_rowsintegerNumber of data rows to preview (default 1, 0 for none).

No output schema declared.

No examples provided.

read_table ~166

Read a full table as a clean pipe table with version hash. Prefer this over reading files directly — handles HTML tables, preserves inline formatting, and returns the version hash needed for any edit. First line of output is metadata: v:{hash} {format} {rows}r {cols}c [{section}] Extract the 12-char hex hash after "v:" (e.g. "a1b2c3d4e5f6") and pass it as the version argument to any write tool. If a write returns STALE_READ, call read_table again for a fresh version.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
table_indexintegeryes0-based table index from list_tables (the number after T).

No output schema declared.

No examples provided.

rename_column ~137

Rename a column header. Row data is unchanged. Requires version from read_table. On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
new_namestringyesNew header text for the column.
old_namestringyesCurrent column identifier: letter ("A"), name, or composite ("B:Priority").
table_indexintegeryes0-based table index from list_tables.
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

replace_table ~156

Replace an entire table with new content. Requires version from read_table. Provide new_content as a pipe table string (header row + delimiter + data rows). The server writes back in the ORIGINAL file format: pipe stays pipe, GitBook HTML stays GitBook HTML (attributes preserved). On success returns ONLY `v:{new_hash}`. On error returns JSON with "error" and "message" fields.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
new_contentstringyesFull pipe table string including header and delimiter rows.
table_indexintegeryes0-based table index from list_tables.
versionstringyes12-char hex hash from read_table (after "v:").

No output schema declared.

No examples provided.

search_tables ~226

Search for rows matching a value across one or all tables in a file. Returns matching rows with table index, row index, and version hash so you can immediately follow up with a write tool. Prefer this over grep for table data — it understands column structure and handles HTML tables. Two search modes (regex overrides pattern if both given): - pattern: case-insensitive substring match (simple, no escaping needed) - regex: full regex via re.search (e.g. ``D 1\.\d+`` for sub-items) If neither pattern nor regex is provided, returns all rows.

NameTypeReqDescription
columnstringRestrict search to a column (letter, name, or composite). Empty string searches all columns.
file_pathstringyesAbsolute path to the Markdown file.
patternstringCase-insensitive substring to match in cell values.
regexstringRegular expression to match in cell values (overrides pattern).
table_indexintegerSearch a specific table (0-based), or -1 for all tables.

No output schema declared.

No examples provided.

update_cells ~217

Batch-update cells. Requires version hash from read_table. Each update is {row, column, value} where: - row: 0-based data row index (header row is NOT counted) - column: letter ("A"), name ("Priority"), or composite ("B:Priority") - value: new cell content (Markdown inline formatting supported) On success returns ONLY `v:{new_hash}`. On error returns JSON: {"error": "STALE_READ"|"EDIT_ERROR"|..., "message": "..."}. If STALE_READ: call read_table again for current version, then retry.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Markdown file.
table_indexintegeryes0-based table index from list_tables.
updatesarrayyesList of {row: int, column: str, value: str} objects.
versionstringyes12-char hex hash from read_table (after "v:", e.g. "a1b2c3d4e5f6").

No output schema declared.

No examples provided.

Common questions

What is the io.github.oborchers/tablestakes MCP server?

io.github.oborchers/tablestakes is an MCP server listed in the public MCP registry as io.github.oborchers/tablestakes. Read and edit HTML/Markdown tables in GitBook-synced documents via MCP tools. This page covers its PyPI package (tablestakes).

Is the io.github.oborchers/tablestakes MCP server safe to use?

io.github.oborchers/tablestakes scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.oborchers/tablestakes MCP server expose?

io.github.oborchers/tablestakes exposes 11 tools: update_cells, insert_row, delete_row, replace_table, create_table, and 6 more. Their descriptions and schemas cost roughly 1,825 tokens of context every time the server is loaded.

Is the io.github.oborchers/tablestakes MCP server still maintained?

io.github.oborchers/tablestakes is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.