io.github.oborchers/tablestakes
PYPI · TABLESTAKES · SCANNED SEP 20
Read and edit HTML/Markdown tables in GitBook-synced documents via MCP tools.
Available components
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 179 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
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
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
claude mcp add oborchers-tablestakes -- uvx tablestakes
{
"mcpServers": {
"oborchers-tablestakes": {
"command": "uvx",
"args": [
"tablestakes"
]
}
}
} {
"servers": {
"oborchers-tablestakes": {
"command": "uvx",
"args": [
"tablestakes"
]
}
}
} codex mcp add oborchers-tablestakes -- uvx tablestakes
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"oborchers-tablestakes": {
"type": "local",
"command": [
"uvx",
"tablestakes"
],
"enabled": true
}
}
} openclaw mcp add oborchers-tablestakes --command uvx --arg tablestakes
mcp_servers:
oborchers-tablestakes:
command: "uvx"
args: ["tablestakes"] {
"McpServers": {
"oborchers-tablestakes": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"tablestakes"
]
}
}
} assistant mcp add oborchers-tablestakes -t stdio -c uvx -a tablestakes
{
"mcpServers": {
"oborchers-tablestakes": {
"command": "uvx",
"args": [
"tablestakes"
]
}
}
} 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.
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 →
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 →
create_table 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.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Table in pipe format (header row + delimiter + data rows). Example: "| Name | Age |\n| --- | --- |\n| Alice | 30 |" |
| file_path | string | yes | Absolute path to the Markdown file. Created if it doesn't exist. |
| format | string | – | "html" (default) or "pipe". HTML produces collapsed single-line GitBook-compatible output. GitBook will auto-add width/data-* attributes on sync. |
| position | integer | – | 1-based line number to insert AFTER. -1 appends (default). 0 inserts at top. |
No output schema declared.
No examples provided.
delete_column 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.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | Column letter ("A"), name ("Priority"), or composite ("B:Priority"). |
| file_path | string | yes | Absolute path to the Markdown file. |
| table_index | integer | yes | 0-based table index from list_tables. |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
delete_row 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| row_index | integer | yes | 0-based data row index to delete (header row is NOT counted). |
| table_index | integer | yes | 0-based table index from list_tables. |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
insert_column 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.
| Name | Type | Req | Description |
|---|---|---|---|
| default_value | string | – | Value for all existing rows (default: empty string). |
| file_path | string | yes | Absolute path to the Markdown file. |
| name | string | yes | Header text for the new column. |
| position | integer | – | 0-based column index for insertion. -1 appends to the right (default). |
| table_index | integer | yes | 0-based table index from list_tables. |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
insert_row 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| position | integer | yes | 0-based row index for insertion. Use -1 to append at the end. |
| table_index | integer | yes | 0-based table index from list_tables. |
| values | object | yes | Dict mapping column identifiers to cell values. Example: {"Name": "Alice", "B": "30", "C:City": "NYC"} |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
list_tables 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| preview_rows | integer | – | Number of data rows to preview (default 1, 0 for none). |
No output schema declared.
No examples provided.
read_table 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| table_index | integer | yes | 0-based table index from list_tables (the number after T). |
No output schema declared.
No examples provided.
rename_column 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| new_name | string | yes | New header text for the column. |
| old_name | string | yes | Current column identifier: letter ("A"), name, or composite ("B:Priority"). |
| table_index | integer | yes | 0-based table index from list_tables. |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
replace_table 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| new_content | string | yes | Full pipe table string including header and delimiter rows. |
| table_index | integer | yes | 0-based table index from list_tables. |
| version | string | yes | 12-char hex hash from read_table (after "v:"). |
No output schema declared.
No examples provided.
search_tables 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.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | – | Restrict search to a column (letter, name, or composite). Empty string searches all columns. |
| file_path | string | yes | Absolute path to the Markdown file. |
| pattern | string | – | Case-insensitive substring to match in cell values. |
| regex | string | – | Regular expression to match in cell values (overrides pattern). |
| table_index | integer | – | Search a specific table (0-based), or -1 for all tables. |
No output schema declared.
No examples provided.
update_cells 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the Markdown file. |
| table_index | integer | yes | 0-based table index from list_tables. |
| updates | array | yes | List of {row: int, column: str, value: str} objects. |
| version | string | yes | 12-char hex hash from read_table (after "v:", e.g. "a1b2c3d4e5f6"). |
No output schema declared.
No examples provided.
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.