KitchenSink4PPT
PYPI · KITCHENSINK4PPT · SCANNED SEP 20
PowerPoint (.pptx) MCP server: editable vector diagrams, tables, budgeted reads, render-to-verify
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 Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 3 of 21 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
- 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 4 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability65
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4473 tokens (~178/item across 25 items; 25 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 Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the KitchenSink4PPT MCP server?
KitchenSink4PPT runs locally as a PyPI package, launched with uvx kitchensink4ppt. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · kitchensink4ppt
claude mcp add nometalalchemist-kitchensink4ppt -- uvx kitchensink4ppt
{
"mcpServers": {
"nometalalchemist-kitchensink4ppt": {
"command": "uvx",
"args": [
"kitchensink4ppt"
]
}
}
} {
"servers": {
"nometalalchemist-kitchensink4ppt": {
"command": "uvx",
"args": [
"kitchensink4ppt"
]
}
}
} codex mcp add nometalalchemist-kitchensink4ppt -- uvx kitchensink4ppt
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nometalalchemist-kitchensink4ppt": {
"type": "local",
"command": [
"uvx",
"kitchensink4ppt"
],
"enabled": true
}
}
} openclaw mcp add nometalalchemist-kitchensink4ppt --command uvx --arg kitchensink4ppt
mcp_servers:
nometalalchemist-kitchensink4ppt:
command: "uvx"
args: ["kitchensink4ppt"] {
"McpServers": {
"nometalalchemist-kitchensink4ppt": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"kitchensink4ppt"
]
}
}
} assistant mcp add nometalalchemist-kitchensink4ppt -t stdio -c uvx -a kitchensink4ppt
{
"mcpServers": {
"nometalalchemist-kitchensink4ppt": {
"command": "uvx",
"args": [
"kitchensink4ppt"
]
}
}
} 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 +17
- Tool safety: pass → unverified ▼ security
- Stability: 0.63 → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- Destructive annotations: All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
- Package version: 1.2.2 → 1.2.3 functional
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +67
- Tool safety: pass → unverified ▼ security
- Stability: 0.30 → unverified ▼ security
- CVE-2026-32871 no longer affects this package ▲ security
- Known CVEs: fail → pass ▲ security
- Source repository: fail → pass ▲ security
- Schema quality: 3964 → 4473 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Score status: failed → scored ▲ functional
- First check of Schema quality: unverified functional
- Schema quality: excellent → good functional
- Package version: 1.1.3 → 1.2.2 functional
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/kitchensink4ppt@1.2.3
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 | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 21 packages
| Packages resolved | 21 |
|---|---|
| Stale | 3 |
| 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 →
apply_edits Apply Edits ~266
Batch editor: many edits, one lock, one backup, one atomic save. Each edit is {"op": name, ...params} addressed by a view "anchor" (from get_presentation_view) or explicit {"slide", "shape"/"table"} keys. Ops: set_text, set_shape (graphics pack), set_table_cells (tables-charts pack), search_and_replace, set_placeholder_text, format_text (graphics pack), delete_shape (graphics pack). Every location is resolved BEFORE anything mutates; any stale anchor refuses the whole batch listing every failed index, and result.changed maps op index to outcome. These ops EDIT existing content; nothing here inserts shapes, tables, or slides. Creation tools live in the packs (enable_tools). atomic must stay True: v1 has no partial-apply mode. Saves atomically with two-slot backup; backup=False skips rotation. Use this when a change needs two or more edits; for a single edit use the standalone tool (set_shape, format_text, set_table_cells, set_placeholder_text, search_and_replace, delete_shape).
| Name | Type | Req | Description |
|---|---|---|---|
| atomic | boolean | – | – |
| backup | boolean | – | – |
| edits | array | yes | – |
| file_path | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
copy_presentation Copy Presentation ~124
Copy a deck byte-for-byte, e.g. to a working copy before heavy edits (create_snapshot names a DTG-stamped copy for you; this tool takes an explicit dest_path). Refuses an existing dest_path unless overwrite=True; an overwritten destination's previous content rotates into its .ks4p-backups prev slot first, so the overwrite is undoable via manage_backups restore. The source file is never modified.
| Name | Type | Req | Description |
|---|---|---|---|
| dest_path | string | yes | – |
| file_path | string | yes | – |
| overwrite | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
create_snapshot Create Snapshot ~139
Save a DTG-stamped permanent copy: YYYYMMDD_HHMM_<name>.pptx (an existing leading DTG in the name is replaced, not stacked), plus an optional short label. Snapshots are the PERMANENT keepers alongside the automatic prev/anchor slots: slots rotate on every mutation, snapshots are never auto-pruned and manage_backups never touches them. Never overwrites (collisions get a numeric suffix). The source file is not modified. Take one before any large or risky editing pass.
| Name | Type | Req | Description |
|---|---|---|---|
| dest_dir | – | – | – |
| file_path | string | yes | – |
| label | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
delete_slide Delete Slide ~154
Delete a slide and garbage-collect everything only it used: notes, charts, embeddings, comments, custom-show references, section membership; jump links to it are neutered. slide: 0-based index or {"slide_id": N}. Prefer set_slide_hidden (design pack) when it might come back. Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| live | string | – | – |
| slide | – | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
diagnose Diagnose Presentation ~189
Self-check for this environment and, optionally, one file. Reports export engine availability (PowerPoint COM vs LibreOffice), sandbox state, KS4P mode/policy env, and the current pack surface with token costs. With file_path: existence, size, PowerPoint lock state, whether the package opens, and slide count, WITHOUT mutating anything. Output is PASTE-SAFE by default: no absolute paths, so it can go straight into a bug report; verbose=True adds the sandbox roots, engine locations, and full file path for local troubleshooting. Run it first when any tool refuses unexpectedly or an export engine seems missing. Reports the update-check state; the only place the check runs. The validate tool (assembly-export pack) does the real opens-clean check in PowerPoint.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | – | – | – |
| verbose | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
disable_tools Disable Tools ~96
Switch pack tools back off to shrink the tool surface (the lite core always stays on). Takes the same pack names as enable_tools, or 'everything'. Idempotent: already-disabled packs are reported, not errors. Nothing about the presentation files changes; this only trims what this session's client has to carry. Reports the approx token cost removed and the remaining active surface.
| Name | Type | Req | Description |
|---|---|---|---|
| packs | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
duplicate_slide Duplicate Slide ~136
Deep-copy a slide: notes, charts with their embedded workbooks, and embeddings are cloned and retargeted; layout and media stay shared by design; creation GUIDs are regenerated (duplicates corrupt). slide: 0-based index or {"slide_id": N}. position: 0-based final index for the copy, default right after the original. The design pack adds move and hide: enable_tools(packs=['design']). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| position | – | – | – |
| slide | – | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
enable_tools Enable Tools ~345
Switch on optional tool packs mid-session; the tool list grows and your client is notified to re-fetch it. Packs: 'graphics' (shapes, connectors, groups, align, z-order, SVG to native editable shapes, diagram generators, images, video/audio, text boxes, run formatting, bullets, format painter, LaTeX equations); 'tables-charts' (tables: create, bulk cells, merge, row/column surgery, borders, styles, CSV/JSON; bar/line/pie/scatter/combo charts, formatting, data readback); 'design' (create FROM template, apply layouts, theme colors/fonts read AND write, brand extract/apply, layout guardrails, slide size, hide/move, autofit report, slide/master backgrounds, master and layout editing, accessibility audit/repair); 'assembly-export' (notes, sections, footers, PDF/PNG/handout export, validation, text extraction, cross-deck copy, deck merge/split, agenda slides, statistics, document properties, anonymize, custom shows, slide transitions and entrance animations); 'review-sweeps' (threaded comments, compare_decks, deck-wide font/color/language/logo sweeps, compress); 'com' (PowerPoint status, zombie check, and editing the deck OPEN in PowerPoint); 'everything' (all). The v1.0 names transitions-animations, review, sweeps, and com-live still resolve to their new homes. Idempotent; reports approx token cost added and the active surface. disable_tools reverses.
| Name | Type | Req | Description |
|---|---|---|---|
| packs | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
find_text Find Text ~214
Search the deck's text. Returns every match with slide index, shape id, paragraph index, and character offsets, exactly the addresses format_text (graphics pack) and apply_edits consume. regex=True treats query as a regular expression (guarded against catastrophic backtracking). Matches text as displayed, not raw XML, so search for & rather than &. count is always the true total; a "page" block gives the omitted count and next offset when more matched than the budget fits. compact=True returns matches as a fields header plus one array each. Formatting-aware replacement lives in the graphics pack: enable_tools(packs=['graphics']). Use this to locate text; to read it in order, use get_text.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | – |
| file_path | string | yes | – |
| include_notes | boolean | – | – |
| limit | – | – | – |
| offset | integer | – | – |
| query | string | yes | – |
| regex | boolean | – | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
fit_text Fit Text ~157
Shrink overflowing text to fit: estimates the largest uniform font scale (floor min_size pt) via an average-glyph-width heuristic, rewrites explicit run sizes (or writes a normAutofit fontScale when sizes are inherited), and enables normAutofit. shape=None fits every overflowing text shape on the slide; one that cannot fit at min_size reports still_overflowing. An ESTIMATE (no font metrics): verify with export_slide_images (assembly-export pack). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| min_size | number | – | – |
| shape | – | – | – |
| slide | – | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_presentation_info Get Presentation Info ~98
Deck-level facts in one call: slide count and size, slide order with durable ids and titles, masters and layouts, section list, and notes presence. The cheap first look before get_presentation_view. To enumerate one kind of element, use list_elements. Rendering, validation, and PDF export live in the assembly-export pack: enable_tools(packs=['assembly-export']).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_presentation_view Get Presentation View ~217
The anchored markdown projection of a deck, THE cheap way to read it: slide headers with durable [s:id] anchors, one block per shape with a stable [a:hex] anchor, tables as pipe tables with t:hex:rNcN cell addresses (1-based there; table tools take 0-based row/col), notes as quoted blocks. Feed the anchors to apply_edits. scope: None for all slides, an index, {"slide_id": N}, or a list. detail: "outline", "text" (default), or "full" (geometry too). Budgeted: a deck too large to render whole returns whole slides plus a "page" block giving the omitted count and the offset that continues; limit/offset page in slides. Shape and diagram editing: enable_tools(packs=['graphics']).
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | – |
| file_path | string | yes | – |
| limit | – | – | – |
| offset | integer | – | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_server_info Get Server Info ~115
Report the KitchenSink4PPT server build: product and PyPI package name, the version a client is connected to, the landing page, the sibling servers in the KitchenSink4AI suite, the registered and lite tool totals, the released test count, the active pack surface and its token bill, and the host platform and Python. A read-only orient call that needs no deck and touches no file, and the only tool that answers WHAT you are connected to. diagnose covers the environment.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
get_slide_info Get Slide Info ~187
One slide in depth: durable slide_id, layout, hidden flag, notes presence, and every shape with id, name, kind, geometry in inches, placeholder type, and text preview. Shape ids here are the addresses every editing tool takes; edit what it lists via the graphics pack. slide: 0-based index or {"slide_id": N}. Budgeted: a crowded slide returns a "page" block with the omitted count and next offset. All slides: get_presentation_view. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| limit | – | – | – |
| live | string | – | – |
| offset | integer | – | – |
| slide | – | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_text Get Text ~218
Plain text of the deck in reading order: shapes in spTree order, table cells tab-joined, fields rendering their cached text. scope: None for all slides, a 0-based index, {"slide_id": N}, or a list; include_notes=True appends speaker notes. Budgeted, paging in whole slides: slide_count stays the deck's true total and a "page" block gives the omitted count and the next offset; limit/offset page explicitly. Rendered-appearance checks live in the assembly-export pack. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files. For edit anchors, use get_presentation_view.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| include_notes | boolean | – | – |
| limit | – | – | – |
| live | string | – | – |
| offset | integer | – | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
get_workflows Get Workflows ~175
Step-by-step recipes for the common jobs, each naming the packs it needs and the exact tool order: build-a-diagram, one-call-diagram, equation-authoring (graphics), build-a-table-report (tables-charts), template-deck-setup, master-restyle, accessibility-pass (design), render-and-review, cross-deck-assembly, deck-merge, animate-a-build (assembly-export), batch-edit-from-view (lite, the cheap loop), review-cycle (review-sweeps), rebrand-pipeline (review-sweeps + design), live-session (com). Call with no task for the index, with a task name for full steps. Read the matching recipe before your first deck edit of a session; it prevents most wrong-tool detours.
| Name | Type | Req | Description |
|---|---|---|---|
| task | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
insert_slide Insert Slide ~160
Add a slide built from a layout (name, or 0-based global index; list_elements kind='layouts' lists them), carrying the layout's placeholder skeleton so inheritance binds. position: 0-based final index, default end. Whole decks start via create_presentation (design pack). Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy when the file is locked by it (UNSAVED until live_save, com pack); 'force' targets the open session; 'off' refuses locked files.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| layout | – | yes | – |
| live | string | – | – |
| position | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_elements List Elements ~252
THE multiplex enumerator, one kind per call: slides, shapes, placeholders, tables, charts, images, diagrams (SmartArt frames with their editable nodes), notes, sections, layouts, masters. Returns a flat item list with ids and locations; slide-scoped kinds honor scope (None = all slides, a selector, or a list). count is always the true number found; a deck with more elements than fit the per-call output budget returns a "page" block naming how many were held back and the offset that continues, so nothing goes missing quietly. limit/offset page explicitly, and compact=True returns a fields header plus one array per item, about a third the size on large decks. Use it to find layout names for insert_slide and shape ids for editing. The packs (enable_tools) hold the tools that edit what this lists. For one slide in depth, use get_slide_info; for edit anchors, use get_presentation_view.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | – |
| file_path | string | yes | – |
| kind | string | yes | – |
| limit | – | – | – |
| offset | integer | – | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
list_hyperlinks List Hyperlinks ~119
Every hyperlink in scope (default all slides): external URLs and jump-to-slide links, on shapes and on text runs, with broken-target detection (missing rels, rels to deleted slides, empty URLs). The addresses reported are exactly what set_hyperlink and remove_hyperlink take. Media playback controls (insert_video/insert_audio, graphics pack) are not hyperlinks and are not listed. Read-only; the file is never modified.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
manage_backups Manage Backups ~174
The automatic backups under .ks4p-backups/ next to each mutated deck: prev (state before the last mutation) and anchor (session start). action='list': slots for one file_path or a whole directory, plus orphaned folders. action='restore': overwrite file_path from source ('prev', 'anchor', or a .pptx path); current content rotates into prev FIRST so the restore is undoable, and the payload is validated before the atomic replace. action='purge': scope 'orphans' or 'slots'; dry_run=True (default) reports only, dry_run=False deletes.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| directory | – | – | – |
| dry_run | boolean | – | – |
| file_path | – | – | – |
| scope | – | – | – |
| source | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
remove_hyperlink Remove Hyperlink ~136
Remove hyperlinks from a shape or text range. target: a shape id (removes the shape-level link AND every run-level link inside the shape) or {"shape_id": N, "paragraph": P, "start"?: S, "end"?: E} for the covered runs only. Orphaned link rels are dropped; media playback affordances (graphics pack av inserts) are left alone. Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| slide | – | yes | – |
| target | – | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
reorder_slides Reorder Slides ~118
Rearrange the whole deck in one call. order: every current 0-based slide index exactly once, in the desired new sequence (a permutation; partial lists refuse). Durable slide_ids and view anchors survive reordering, plain indices do not. For moving ONE slide, move_slide in the design pack is simpler: enable_tools(packs=['design']). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| order | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
search_and_replace Search and Replace ~182
Deck-wide find and replace, safe across fragmented runs (each replacement keeps the first run's formatting), SmartArt node text included. regex=True enables capture groups (refused live); matches overlapping slide-number/date fields are skipped. Bulk cell rewrites: set_table_cells (tables-charts pack). Saves atomically with two-slot backup. live='auto' edits the open PowerPoint copy of a locked file; 'force' targets the open session; 'off' refuses locked files. Batches: apply_edits.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| find | string | yes | – |
| include_notes | boolean | – | – |
| live | string | – | – |
| match_case | boolean | – | – |
| regex | boolean | – | – |
| replace | string | yes | – |
| scope | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
set_hyperlink Set Hyperlink ~167
Set a hyperlink on a shape or text range, replacing any link already there. target: a shape id, or {"shape_id": N, "paragraph": P, "start"?: S, "end"?: E} for a text range. Exactly one destination: url (external) or to_slide (a jump by index or {"slide_id": N}, the structure delete_slide knows how to neuter). tooltip sets hover text. Navigation buttons pair with insert_shape (graphics pack). Saves atomically with two-slot backup; backup=False skips rotation.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| slide | – | yes | – |
| target | – | yes | – |
| to_slide | – | – | – |
| tooltip | – | – | – |
| url | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
set_placeholder_text Set Placeholder Text ~182
Fill a layout placeholder (styling inherits from the layout). placeholder: "title", "subtitle", "body"/"content" (each matches both body and obj placeholders; exact type wins), a raw ph type, or an idx int (idx/paragraphs= file-mode only). text: newline = paragraph, leading tabs = levels; or paragraphs=[{"text": str, "level": 0..8}]. Free text boxes: graphics pack. Saves atomically with two-slot backup; backup=False skips rotation. live='auto' edits the open PowerPoint copy of a locked file. Batches: apply_edits.
| Name | Type | Req | Description |
|---|---|---|---|
| backup | boolean | – | – |
| file_path | string | yes | – |
| live | string | – | – |
| paragraphs | – | – | – |
| placeholder | – | yes | – |
| slide | – | yes | – |
| text | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
What is the KitchenSink4PPT MCP server?
KitchenSink4PPT is an MCP server listed in the public MCP registry as io.github.nometalalchemist/kitchensink4ppt. PowerPoint (.pptx) MCP server: editable vector diagrams, tables, budgeted reads, render-to-verify. This page covers its PyPI package (kitchensink4ppt).
Is the KitchenSink4PPT MCP server safe to use?
KitchenSink4PPT scores 73 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 KitchenSink4PPT MCP server expose?
KitchenSink4PPT exposes 25 tools: get_presentation_view, apply_edits, get_text, find_text, search_and_replace, and 20 more. Their descriptions and schemas cost roughly 4,320 tokens of context every time the server is loaded.
Is the KitchenSink4PPT MCP server still maintained?
KitchenSink4PPT 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.