superdoc_table
Create and modify table structure, content, and styling. Find table/row/cell nodeIds via superdoc_get_content({action:"blocks"}) or superdoc_search. ACTIONS: • Structure: delete, insert_row, delete_row, insert_column, delete_column, merge_cells, unmerge_cells. • Cell content: set_cell_text (text)...
This record as markdown: /tools/superdoc-mcp/superdoc-table.md
What superdoc_table does on Superdoc
AI agents call superdoc_table to permanently remove resources in Superdoc, typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.
| Parameter | Type | Required | Description |
|---|---|---|---|
end | object | — | Required for action 'merge_cells'. |
mode | object | — | Required for action 'set_borders'. |
rule | string | — | Only for action 'set_row'. Omit for other actions. |
text | string | — | Required for action 'set_cell_text'. |
color | object | — | Required for action 'set_shading'. |
count | integer | — | Only for actions 'insert_row', 'insert_column'. Omit for other actions. |
edges | object | — | Only for action 'set_borders'. Omit for other actions. |
force | boolean | — | Bypass confirmation checks. |
start | object | — | Required for action 'merge_cells'. |
action | string | Yes | The action to perform. One of: delete, delete_column, delete_row, insert_column, insert_row, merge_cells, move_column, move_row, set_borders, set_cell, set_cell |
border | object | — | Only for action 'set_borders'. Omit for other actions. |
dryRun | boolean | — | Preview the result without applying changes. |
Parameters from the server's own tool schema.
Why superdoc_table is rated Critical
An AI agent that decides to call superdoc_table doesn't hesitate, doesn't double-check, and doesn't stop at one. Whatever it removes from Superdoc is gone. There is no undo for destructive operations.
Risk signalsAccepts file system path (destination) · High parameter count (68 properties)
Attacks that exploit this kind of access
The rule that runs superdoc_table safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Superdoc, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For superdoc_table, this is the rule to start with:
superdoc_table is removed from the agent's tool list entirely, so the agent never calls it. The rest of the server keeps working.
The button opens the PolicyLayer dashboard: create your workspace, connect Superdoc, apply this rule, and every superdoc_table call is checked against it from then on.
Questions about superdoc_table
Create and modify table structure, content, and styling. Find table/row/cell nodeIds via superdoc_get_content({action:"blocks"}) or superdoc_search. ACTIONS: • Structure: delete, insert_row, delete_row, insert_column, delete_column, merge_cells, unmerge_cells. • Cell content: set_cell_text (text). set_cell (vAlign / wrap / fit / preferred width). • Row / column: set_row (height + rule), set_row_options (repeat-header, allow-break), set_column (widthPt). • Table styling: set_borders, set_shading, set_style_options (headerRow / bandedRows / firstColumn / lastColumn / lastRow / bandedColumns), set_layout (autofit / alignment / direction / preferredWidth), set_options (default cell margins + cell spacing). LOCATORS (the shapes ops accept): • insert_row append shorthand: { nodeId: "<tableId>" } with no rowIndex/position appends at the end. Three other forms: target a row + position, table + rowIndex + position, or any of the above with count:N for multiple. • insert_column shorthand: position:"first"|"last" with no columnIndex. Otherwise columnIndex + position:"left"|"right". • merge_cells: table target + start:{rowIndex, columnIndex} + end:{rowIndex, columnIndex}. • set_cell_text: table target + rowIndex + columnIndex (preferred) OR cell target. • set_cell: cell target only. Does NOT accept table+rowIndex+columnIndex. • set_borders / set_shading: table OR cell target. NOT a row target. COLOR FORMAT: Hex strings accept #RRGGBB, RRGGBB, #RGB, or 3-digit RGB; also "auto"; also null to clear (where supported). Stored canonically as uppercase RRGGBB. Always pass a concrete color when one is implied. Never call set_borders with auto for a "make it look [X]" ask. STYLING (TWO MODES): A. STRUCTURAL CHANGE → re-apply the existing styling. Triggers: insert_row / insert_column / delete_row / delete_column / merge_cells / unmerge_cells. (NOT set_cell_text or set_cell: those don't disturb borders/shading.) Recipe: read the current borders/shading/cnf flags via superdoc_get_content({action:"blocks"}) before the change, then re-apply the SAME values after with set_borders + set_shading + set_style_options. The goal is consistency, not a redesign. Skip on a freshly created table. A new table starts un-styled. B. STYLE-CHANGE REQUEST ("make it look [X]" / "style the whole table") → apply the FULL set with concrete colors. Touch every axis: borders, shading, text alignment, font color/weight, cnf flags, spacing. A single set_borders call without shading and font tweaks always looks half-finished. That's the #1 cause of "no visual change" complaints. Color palette: discover the document's palette by reading superdoc_get_content({action:"blocks"}) and reusing the colors on existing tables/headings. When no palette is obvious, default to corporate blue "1F3864" or dark grey "444444" for accents and "F2F2F2" / "E7E6E6" for banding. Recipe (call ALL of these): 1. set_borders applyTo:"all" with an explicit color and weight. 2. set_shading on the header row cells with the accent color. Add banding on alternate body rows if appropriate. 3. set_style_options { headerRow: true, bandedRows?: true } so cnf regions are recognized. 4. Cell-text alignment via superdoc_format action:"set_alignment". Center the header, left-align body, right-align numeric columns. Paragraph-level: target the paragraph inside each cell. 5. Font color + weight via superdoc_format action:"inline". Header gets a contrasting color (white on dark fill, accent on light fill) plus bold:true. 6. set_options if the user asks for tighter or looser spacing. Steps 4–5 cross to superdoc_format. Use superdoc_mutations to batch many format.apply steps in one call. AFTER set_cell_text, match the new cell to its siblings: set_cell_text writes plain text with the document's default font/size/color and no weight. Always follow up with one superdoc_format inline call copying fontFamily/fontSize/color/bold from a sibling cell (or any non-empty body paragraph if the table is fresh and has no sibling content). If sibling cells show a bold-prefix pattern like "Label: value", replicate it on the new cell via superdoc_search + superdoc_format inline (or one superdoc_mutations batch with format.apply steps). LIST-TO-TABLE: (1) superdoc_create action:"table" with the desired rows/columns. (2) Populate cells with set_cell_text using rowIndex/columnIndex (one call per cell). (3) DELETE THE WHOLE LIST in one call: superdoc_list({action:"delete", target:{kind:"block", nodeType:"listItem", nodeId:"<any-item-id>"}}). The op walks the contiguous list and removes all items. Wrong paths for list deletion (all leave bullets/empty paragraphs behind): text.delete, superdoc_edit action:"delete" on text refs, lists.detach, lists.convertToText. EXAMPLES: 1. {"action":"insert_row","nodeId":"<tableNodeId>"} 2. {"action":"insert_column","nodeId":"<tableNodeId>","position":"last"} 3. {"action":"merge_cells","nodeId":"<tableNodeId>","start":{"rowIndex":0,"columnIndex":0},"end":{"rowIndex":1,"columnIndex":1}} 4. {"action":"set_cell_text","nodeId":"<tableNodeId>","rowIndex":0,"columnIndex":0,"text":"Q1 Revenue"} 5. {"action":"set_row","nodeId":"<tableNodeId>","rowIndex":0,"heightPt":24,"rule":"atLeast"} 6. {"action":"set_borders","nodeId":"<tableNodeId>","mode":"applyTo","applyTo":"all","border":{"lineStyle":"single","lineWeightPt":1,"color":"#000000"}} 7. {"action":"set_shading","target":{"kind":"block","nodeType":"tableCell","nodeId":"<cellNodeId>"},"color":"#E3F2FD"} 8. {"action":"set_style_options","nodeId":"<tableNodeId>","styleOptions":{"headerRow":true,"bandedRows":true}}. It is categorised as a Destructive tool in the Superdoc MCP Server, which means it can permanently delete or destroy data. Block by default and require explicit approval.
superdoc_table accepts 12 parameters: end, mode, rule, text, color, count, edges, force, start, action, border, dryRun. Required: action. The full parameter table on this page comes from the server's own tool schema.
Register the Superdoc MCP server in PolicyLayer and add a rule for superdoc_table: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Superdoc. Nothing to install.
superdoc_table is a Destructive tool with critical risk. Critical-risk tools should be blocked by default and only enabled with explicit human approval.
Yes. Add a rate_limit block to the superdoc_table rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for superdoc_table. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
superdoc_table is provided by the Superdoc MCP server (@superdoc/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Superdoc, and thousands of servers like it.
Across the catalogue