# Let Claude Desktop and Codex capture, annotate, preview, and export—inside a real Mac editor.

> Snapperon local Model Context Protocol server for macOS. Tested in Claude Desktop and Codex Desktop. Canonical page: https://snapperon.com/mcp/. Updated 2026-11-14.

18 MCP commands · All 9 annotation tools + 7 framing controls · 57% smaller editing schema · 24,146 verified option cases.

[Download Snapperon Free for Mac](https://snapperon.com/#download-link) · macOS 14+ · Apple silicon · No account.

## The short answer

Snapperon is a native Swift and AppKit screenshot editor for Mac. Its local Model Context Protocol (MCP) server lets Claude Desktop and Codex Desktop control the installed app through 18 commands. All 9 annotation tools, every reviewed style option and the presentation controls are available, with rendered previews and one-step Undo for each committed edit batch.

The original screenshot stays available without image-generation changes. Annotations stay editable in the native editor so a person can move, resize or restyle them afterward. PNG export is lossless; JPEG is a compressed output option. Snapperon requires macOS 14 (Sonoma) or later on Apple silicon (M1 or newer). This is local desktop app control, not a hosted cloud API.

## Verified clients

Claude Desktop: verified on-demand tool discovery, all nine annotation tools, grounded semantic callouts without corrective coaching, native local file import and exact Undo/Redo. The editing input schema is 57% smaller than its earlier expanded form using lossless local references. Clear tool descriptions let Claude discover the edit command dynamically without “load all tools.” This percentage measures that editing schema, not total conversation tokens.

In Claude Desktop testing, raw chat-attachment byte transfer failed on the client side. Use Snapperon’s native Open File dialog to select a local image or PDF, or capture an authorized Mac window or display. Do not rely on raw chat-attachment byte transfer.

Codex Desktop: the configured desktop connection completed visual inspection and coordinated markup, including reading an embedded six-digit image code, preparing a matching rectangle and auto-fitted text label, inspecting the preview, committing as one Undo step and presenting the finished visual. Native readback verified editable annotations and exact Undo/Redo.

Verification corpus: 24,146 option cases, 275 core tests and 38 native suites, with Debug and Release builds. These are reviewed finite cases and sampled settings, not every numeric combination or arbitrary model request. Other local MCP clients may be compatible but have not been verified here.

## Connect through native settings

Open Snapperon Settings → Assistant Connections → Enable AI assistants. Read the access explanation. Use Copy Codex Setup or Copy Claude Desktop Setup to generate configuration for the exact installed app. Merge only the copied entry, preserving other servers, then reconnect local MCP servers in the client. Codex uses config.toml; Claude Desktop uses mcpServers in claude_desktop_config.json. No invented package, extra runtime or remote server URL is needed.

The bundled signed helper remains inside its associated app. Choose Export Folder for file saves. Troubleshooting → Save Connection Diagnostics exports sanitized diagnostics without images, text, paths, grant IDs, account information or raw arguments. Existing restricted connections retain access until the user chooses Enable Full Control. Disabling Enable AI assistants revokes access.

## Work from ordinary requests

### “Number these three peaks.”

Inspect the source image, identify the three peaks, stage native counters with edit_document or mark_regions, inspect the rendered preview, then commit_edit once.

### “Highlight this heading.”

Inspect the heading, stage a native highlight with its color and opacity, check the preview and commit. Text-snapping or explicit regions can guide placement.

### “Remove the middle marker.”

Inspect the current annotations, select the intended annotation ID and stage its removal with edit_document. Preview and commit while preserving the other markers.

### “Inspect this dialog, box the verification code, and copy it to the clipboard.”

Capture the authorized dialog or open its local image. Inspect the code, stage a matching rectangle and text label, preview, commit as one Undo action and export to the authorized clipboard.


## From first draft to finished visual

### Developer docs, changelogs & knowledge bases

Capture live windows, add numbered counters and labels, verify a rendered preview and export crisp PNGs for step-by-step documentation.

### UI QA, PR screenshots & design review

Let a coding assistant inspect an authorized window and place grounded callouts. Review the result and fine-tune the native layers yourself.

### Local PII redaction

Apply Solid redaction, or Labeled and Pattern treatments on Pro, to screenshots and PDF pages. Inspect the flattened output. An assistant that reads the original source may see sensitive pixels; choose its access accordingly.

### Charts, research figures & floor plans

Number chart peaks, highlight a heading or mark up a PDF page with arrows and notes. Preserve the original source and keep each annotation adjustable.

### Agent draft → human polish

Have an assistant prepare and preview the first pass. Adjust any layer in the Mac editor, then finish with Copy + Close, drag-and-drop or PNG/JPEG export.


## Complete native tool and option reference

Exact public IDs from the reviewed native input catalog: 109 top-level tool settings across nine tools and 18 top-level composition fields across seven framing groups. Nested object subfields (shadow.*, banner_colors.*, shadow_lighting.* and watermark_style.*) appear as additional table rows; they are not additional top-level settings. get_capabilities returns current defaults and per-value Free/Pro availability; settings are not automatically all Free. Colors accept a catalog name, #RRGGBB, #RRGGBBAA or [r,g,b,a] components in 0–1. Catalog colors: red, orange, yellow, green, magenta, blue, indigo, teal, charcoal, white. Fonts must be installed on the Mac.

### Creation and selective editing

- `op`: Operation: add, update, remove, remove_target, duplicate, front, back, reset, move, remove_group, composition or reset_all. Each operation accepts its own fields.
- `tool`: For add: arrow, text, rectangle, circle, counter, spotlight, redact, highlight or freehand.
- `start / end`: Two-dimensional positions, normalized to the source by default. Use coordinate_space: composition_pixels only when the inspected composition supplies that coordinate space.
- `points`: Freehand path with 2–4,096 [x,y] points. Use points without start/end, or the supported start/end gesture.
- `regions / whole_line`: Highlight regions: 1–1,024 normalized [x,y,width,height] rectangles, without start/end. whole_line selects the anchored line.
- `text / title / text_box_height`: Text content and optional title. An explicit text_box_height is 1–10,000 native points or null. New labels can grow vertically to fit wrapped text.
- `number`: Counter value: integer 1–9,999.
- `id / group_id / delta`: Target a returned annotation ID, remove a group by its ID, or move a selected annotation by [dx,dy]. front/back change its order.
- `settings`: Use the exact tool-specific setting IDs below. A composition operation uses the framing settings instead.

### Arrows

Direct the eye with straight or curved paths, hand-drawn, cartoon and marker presets, single or double arrowheads, borders, shadows and glow.

| Parameter | Type, values and limits |
| --- | --- |
| `arrow_border` | color · supports tool defaults |
| `arrow_border_width` | number · 0–48 · supports tool defaults |
| `arrow_curvature` | number · 0–0.6 · supports tool defaults |
| `arrow_glow` | bool · supports tool defaults |
| `arrow_glow_amount` | number · 0–1 · supports tool defaults |
| `arrow_glow_color` | optional_color · null supported · supports tool defaults |
| `arrow_length` | number · 1–1000000 · per-annotation setting |
| `arrow_path` | ArrowPathStyle · standard, curved, angled, dashed · supports tool defaults |
| `arrow_preset` | ArrowPreset · basic, hand_drawn, cartoon, marker · supports tool defaults |
| `arrow_rotation` | number · -90–90 · per-annotation setting |
| `arrow_shadow` | bool · supports tool defaults |
| `arrow_straighten` | number · 0–1 · supports tool defaults |
| `arrow_stroke` | bool · supports tool defaults |
| `color` | color · supports tool defaults |
| `fade_tail` | bool · supports tool defaults |
| `flip_curve` | bool · supports tool defaults |
| `head` | ArrowHeadStyle · filled, open, double_ended, double_open, none · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `width` | number · 3–72 · supports tool defaults |

### Text & Banners

Place a plain label or a designed banner. Set typography, text/backdrop colors, alignment, rotation, icons, gradients and shadows. New labels preserve wrapping width and expand vertically to fit their content; inspect placement in the preview.

| Parameter | Type, values and limits |
| --- | --- |
| `banner` | TextBannerStyle · none, solid, outline, filled, marker_note, lock_card, comic_burst, retro_letterpress, title_info, handwritten, gradient_border, gradient_fill, shadow, glow, pill, sticky, gradient_text, ribbon, caption, white, pink, blue, bracket, underline, corner_fold, tape, holographic, neon, glass · supports tool defaults |
| `banner_border_color` | optional_color · null supported · supports tool defaults |
| `banner_colors` | colors · supports tool defaults |
| `banner_colors.background` | optional_color · null supported |
| `banner_colors.text` | optional_color · null supported |
| `banner_gradient` | TextBannerGradient · spectrum, aurora, sunset, ocean, blue_violet · supports tool defaults |
| `banner_icon` | BannerIcon · null, info, sparkle, document, checkmark, lock, warning, error, question_mark, star, link, cursor, arrow_up, arrow_right, pin, eye, message, comment, mail, camera, image, calendar, clock, target, bell, heart, thumbs_up, thumbs_down, flag, gear, location, lightbulb, bookmark, tag, folder, download, upload, shield · supports tool defaults |
| `banner_icon_color` | optional_color · null supported · supports tool defaults |
| `banner_icon_visible` | bool · supports tool defaults |
| `banner_title_color` | optional_color · null supported · supports tool defaults |
| `bold` | bool · supports tool defaults |
| `color` | color · supports tool defaults |
| `font` | font · supports tool defaults |
| `handwriting_weight` | optional_bool · null supported · supports tool defaults |
| `italic` | bool · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `size` | number · 1–1000 · supports tool defaults |
| `text_alignment` | TextAlignment · left, center, right · supports tool defaults |
| `text_backdrop` | optional_color · null supported · supports tool defaults |
| `text_backdrop_rounding` | number · 0–1 · supports tool defaults |
| `text_rotation` | number · -180–180 · supports tool defaults |
| `text_scale` | number · 3–24 · supports tool defaults |
| `underline` | bool · supports tool defaults |

### Counters (Numbered Steps)

Place numbered badges for walkthroughs and bug reports. Control the number, scale, foreground, border, treatment, rotation and shadow.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · supports tool defaults |
| `counter_border` | color · supports tool defaults |
| `counter_border_width` | number · 0–48 · supports tool defaults |
| `counter_rotation` | number · -180–180 · supports tool defaults |
| `counter_scale` | number · 0.1–200 · supports tool defaults |
| `counter_shadow` | number · 0–2 · supports tool defaults |
| `counter_treatment` | CounterTreatment · filled_circle, outline_circle, filled_square, outline_square, pin · supports tool defaults |
| `foreground` | color · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `size` | number · 1–1000 · supports tool defaults |

### Highlights

Emphasize a heading or detail with native highlight styles, color and intensity. Text snapping can follow a region or anchored whole line.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · per-annotation setting |
| `highlight_color` | color · supports tool defaults |
| `highlight_intensity` | number · 0–1 · supports tool defaults |
| `highlight_snap` | bool · supports tool defaults |
| `highlight_style` | HighlightStyle · clean, handmade · supports tool defaults |
| `rectangle_rounding` | number · 0–1 · supports tool defaults |
| `shape_size` | number · 1–1080 · per-annotation setting |

### Redaction

Cover sensitive pixels in flattened PNG/JPEG output while leaving the original file untouched. Solid is available in Free; Labeled and Pattern require Pro. Original pixels remain in the editable source, so choose assistant access carefully.

| Parameter | Type, values and limits |
| --- | --- |
| `rectangle_rounding` | number · 0–1 · supports tool defaults |
| `redaction_color` | RedactionColor · black, white, charcoal, red, yellow · supports tool defaults |
| `redaction_custom_color` | optional_color · null supported · supports tool defaults |
| `redaction_label_text` | string · maximum 128 native characters · supports tool defaults |
| `redaction_padding` | number · 0–32 · supports tool defaults |
| `redaction_pattern_size` | number · 0–1 · supports tool defaults |
| `redaction_shows_label` | bool · supports tool defaults |
| `redaction_text_size` | number · 0.15–1.5 · supports tool defaults |
| `redaction_treatment` | RedactionTreatment · solid, labeled, pattern · supports tool defaults |
| `shape_size` | number · 1–1080 · supports tool defaults |

### Rectangles

Frame panels and controls with a border or fill, rounded corners, native border styles, glow, opacity and shadows.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · supports tool defaults |
| `filled` | bool · supports tool defaults |
| `rectangle_rounding` | number · 0–1 · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `shape_border_style` | ShapeBorderStyle · solid, dashed, dotted, hand_drawn · supports tool defaults |
| `shape_fill_color` | color · supports tool defaults |
| `shape_glow` | number · 0–1 · supports tool defaults |
| `shape_kind` | ShapeKind · rectangle, circle · per-annotation setting |
| `shape_opacity` | number · 0–1 · supports tool defaults |
| `shape_shadow` | number · 0–1 · supports tool defaults |
| `shape_size` | number · 1–1080 · supports tool defaults |
| `width` | number · 0.5–96 · supports tool defaults |

### Circles / Ellipses

Circle a target with configurable outline, fill, border style, glow, opacity and shadows.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · supports tool defaults |
| `filled` | bool · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `shape_border_style` | ShapeBorderStyle · solid, dashed, dotted, hand_drawn · supports tool defaults |
| `shape_fill_color` | color · supports tool defaults |
| `shape_glow` | number · 0–1 · supports tool defaults |
| `shape_kind` | ShapeKind · rectangle, circle · per-annotation setting |
| `shape_opacity` | number · 0–1 · supports tool defaults |
| `shape_shadow` | number · 0–1 · supports tool defaults |
| `shape_size` | number · 1–1080 · supports tool defaults |
| `width` | number · 0.5–96 · supports tool defaults |

### Spotlights

Focus attention with a native spotlight: intensity, fill and glow intensity, zoom, shape size and fill color. spotlight_dim_background controls dimming of the presentation background.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · supports tool defaults |
| `filled` | bool · supports tool defaults |
| `shape_fill_color` | color · supports tool defaults |
| `shape_size` | number · 1–1080 · supports tool defaults |
| `spotlight_fill_intensity` | number · 0–1 · supports tool defaults |
| `spotlight_glow_intensity` | number · 0–1 · supports tool defaults |
| `spotlight_intensity` | number · 0.15–1 · supports tool defaults |
| `spotlight_zoom` | number · 1–3 · supports tool defaults |
| `width` | number · 0.5–96 · supports tool defaults |

### Freehand

Draw freeform strokes with native ink styles and modes, smoothing, weight, opacity, inner/glow colors and shadows.

| Parameter | Type, values and limits |
| --- | --- |
| `color` | color · supports tool defaults |
| `freehand_glow` | number · 0–1 · supports tool defaults |
| `freehand_glow_color` | optional_color · null supported · supports tool defaults |
| `freehand_inner_color` | optional_color · null supported · supports tool defaults |
| `freehand_mode` | FreehandMode · freehand, straight_line · supports tool defaults |
| `freehand_opacity` | number · 0–1 · supports tool defaults |
| `freehand_smoothing` | number · 0–1 · supports tool defaults |
| `freehand_style` | FreehandInkStyle · pen, marker, pencil, dashed, calligraphy, atomic_glow · supports tool defaults |
| `shadow` | shadow · null supported · supports tool defaults |
| `shadow.blur` | number · 0–48 |
| `shadow.distance` | number · 0–24 |
| `shadow.elevation` | enum · none, subtle, floating, sticker, custom |
| `shadow.extent` | number · 1–3 |
| `shadow.intensity` | number · 0–15 |
| `shadow.opacity` | number · 0–0.4 |
| `shadow.tint` | color |
| `width` | number · 1–64 · supports tool defaults |
## Presentation, framing and canvas options

### Crop & alignment

Trim and position the source with normalized crop and offset controls; widescreen levels and alignment are also exposed.

| Parameter | Type, values and limits |
| --- | --- |
| `crop` | number · 0–1 ratio |
| `crop_offset` | point · -1–1 normalized crop translation [x,y] |
| `widescreen_level` | number · 0–6 integer_level |
| `widescreen_alignment` | enum · left, center, right |

### Backgrounds & presentation

Choose a floating image or framed presentation and a catalog backdrop. Selecting a designed background can apply its matching border and restore padding; explicit fields in the batch take precedence.

| Parameter | Type, values and limits |
| --- | --- |
| `presentation_mode` | enum · floating, framed |
| `background` | enum · prism, radiance, coral, midnight, mint, sky, snapperon, orbit, dune, holographic, none, nocturne, spectrum, gold, sunset, gilded, jade, opal, electric, alabaster, boreal, quicksilver, coastal |

### Padding

Set the canvas inset in native points.

| Parameter | Type, values and limits |
| --- | --- |
| `padding` | number · 0–400 points |

### Borders

Enable the border, choose a native style and set an explicit width or restore its automatic width with null. Borders render in framed mode.

| Parameter | Type, values and limits |
| --- | --- |
| `border_enabled` | boolean |
| `border_style` | enum · gradient, vivid_glow, aurora, glass, soft_light, neon, premium_dark, prism, chrome, champagne, porcelain, double_line, gilded_flow, chromatic_edge, opal_glass, electric_wave, ice_blue, moonstone, champagne_luster, velvet_obsidian, solar_flare, crisp_jade, stratosphere, diffraction, liquid_platinum, smoked_quartz, white_frame |
| `border_width` | nullable_number · 0–72 points · null supported |

### Rounded corners

Set outer and inner corner radii; null restores the automatic inner radius.

| Parameter | Type, values and limits |
| --- | --- |
| `outer_corner_radius` | number · 0–200 points |
| `inner_corner_radius` | nullable_number · 0–200 points · null supported |

### Shadows & dimming

Control floating shadow and lighting. Decide whether a spotlight also dims the surrounding presentation background.

| Parameter | Type, values and limits |
| --- | --- |
| `floating_shadow` | nullable_number · 0–200 native_slider · null supported |
| `shadow_lighting` | nullable_object · null supported |
| `shadow_lighting.angle` | value · 0–180 degrees |
| `shadow_lighting.elevation` | value · 0.25–2 |
| `spotlight_dim_background` | boolean |

### Watermarks

Free output carries the Snapperon watermark. Pro can use custom text, single or tiled branding, or no watermark, with intensity, placement and typography controls.

| Parameter | Type, values and limits |
| --- | --- |
| `watermark` | string · maximum 1000 native characters |
| `watermark_intensity` | number · 0–1 ratio |
| `watermark_style` | nullable_object · null supported |
| `watermark_style.angle` | number · -90–90 |
| `watermark_style.appearance` | enum · standard, subtle |
| `watermark_style.color_mode` | enum · adaptive, light, dark |
| `watermark_style.insets` | number · 0–200 |
| `watermark_style.placement` | enum · top_left, top_center, top_right, center_left, center, center_right, bottom_left, bottom_center, bottom_right |
| `watermark_style.scale` | number · 0.25–3 |
| `watermark_style.size` | number · 8–72 |
| `watermark_style.spacing` | number · 24–400 |
| `watermark_style.type` | enum · single, tiled |
| `watermark_style.weight` | number · 0–2 |
## Copy-paste prompts for Claude Desktop and Codex

Replace sample paths and targets with your own. Approve native dialogs and inspect the rendered preview. These are requests, not guarantees of model accuracy. Do not share an unredacted source with an assistant that must not receive its contents.

### Step-by-step product tutorial

Open ~/Desktop/preferences.png in Snapperon, add numbered counters 1, 2, and 3 next to the notification switches, point a curved arrow at Save Changes, preview the render to confirm no labels cover UI text, and export a PNG.

### Visual inspection + callout

Inspect this screenshot in Snapperon, read the six-digit code on screen, frame the code with a rectangle and a matching text banner, commit the batch, and show me the result.

### Chart & peak analysis

Open ~/Downloads/q4-revenue.png, number these three peaks, highlight the chart heading, add a clean presentation backdrop with subtle shadow, and copy to clipboard.

### Client redaction

Open page 1 of ~/Documents/invoice-sample.pdf in Snapperon, permanently redact the card number, expiry date, and security code using solid redaction, inspect the preview to verify every digit is covered, and save as PNG.

Privacy note: Asking a connected assistant to locate sensitive fields requires it to inspect the unredacted source page, which your AI client may send to its provider. For confidential data your AI provider should not see, apply Solid redaction manually in Snapperon and verify the flattened export.

### Selective layer refinement

In the open Snapperon document, remove the middle marker, move the top callout banner slightly higher so it clears the toolbar, and preview the updated image.

### UI QA spotlight

Capture my simulator window in Snapperon, spotlight the misaligned checkout button, add a short red arrow and note explaining the padding issue, and invoke Copy + Close.


## What the 18 MCP commands cover

### Import & live window capture

Open local images and PDF pages through the native file dialog, access open documents, import supplied image/PDF bytes where the client supports it, or capture authorized windows and displays. Source lists refresh so newly opened windows appear immediately.

### All 9 annotation tools

Arrows, text, rectangles, circles, counters, spotlight, redaction, highlighting and freehand. Each is a real native annotation layer.

### Complete styling & option control

Discover and adjust fonts, colors, sizes, opacity, arrowheads, curves, shadows, effects and redaction treatments. All reviewed local options are mapped; the verification corpus covers 24,146 option cases. Free and Pro style rules still apply.

### Image presentation

Crop, backgrounds/backdrops, padding, borders, rounded corners, shadows and watermark controls.

### Selective editing

Select, move, resize, duplicate, reorder, restyle or remove individual annotations without disturbing the rest of the work.

### Preview before commit

Stage edits, inspect the rendered output, revise the same staged batch and commit it as one native Undo action.

### Documents, PDF pages & windows

Switch open documents and PDF pages, adjust zoom and window placement, and preserve open work.

### Export & native handoff

Export PNG/JPEG, copy to an authorized clipboard, save to an approved folder, or invoke native Save As, Share, Preview and Copy + Close. Native dialogs may require your choices; opening one does not complete a save or share.

### Preferences & diagnostics

Discover settings, update authorized preferences, open native help/settings and save connection diagnostics. Access grants, macOS approvals and account/payment decisions remain native human actions.

Local MCP control works without an account in Free and Pro. Standard plan rules still apply: Free includes up to 10 screenshots/day, core styles, Solid redaction and a Snapperon watermark on saved/shared images. Pro adds unlimited captures, the full style and redaction library, and a custom watermark or none.

## Command lifecycle stages

- Discover & acquire: get_capabilities, get_app_state, list_sources, acquire_image
- Inspect & semantic callouts: inspect_document, mark_regions
- Create, style & selective refinement: edit_document
- Preview, commit & recover: commit_edit, cancel_operation, get_operation
- Documents, PDF pages & windows: present_document, set_document_page, release_document
- Export & native handoff: export_document, perform_native_action
- Undo, Redo & preferences: get_document_history, navigate_history, update_preferences

## The complete 18-command reference

1. `get_capabilities`: Discover tools, styles, fonts, options, limits and access.
2. `get_app_state`: Read app state, entitlement, permissions and preference version.
3. `list_sources`: Refresh authorized open documents, windows and displays.
4. `acquire_image`: Acquire a source or supported supplied PNG/JPEG/PDF bytes as an editable document.
5. `inspect_document`: Read document or staged state and inspect its source/composition image.
6. `mark_regions`: Prepare grounded semantic callouts around identified regions.
7. `edit_document`: Prepare all nine annotation tools, selective edits, styling and framing; revise a staged batch.
8. `commit_edit`: Apply the staged batch as one native Undo action.
9. `cancel_operation`: Discard a stage or cancel an uncommitted operation.
10. `get_operation`: Recover an operation result using its original idempotency key.
11. `present_document`: Show a native editor; control selection, zoom, viewport and window placement.
12. `get_document_history`: Read exact available Undo/Redo action IDs.
13. `navigate_history`: Undo or redo the exact available action, refusing intervening changes.
14. `set_document_page`: Switch PDF pages while preserving each page’s edits.
15. `export_document`: Render PNG/JPEG, save to an approved folder, copy or run native Copy + Close.
16. `update_preferences`: Change authorized preferences using the current preference version.
17. `perform_native_action`: Open native dialogs, settings, help and diagnostics; perform authorized app/window actions.
18. `release_document`: Release unused assistant handles while preserving existing native editors and retry receipts.

## Built for real-world agent behavior

### On-demand discovery

The editing input schema is 57% smaller than its earlier expanded form, using lossless local references. Clear descriptions help Claude Desktop find the editing command when needed. This measures that schema, not total conversation tokens.

### Auto-expanding text labels

New text labels keep the requested wrapping width and grow vertically to fit the content. A compact AI-specified box does not silently hide its wrapped label; inspect the preview for placement.

### Live source refresh

Window and display discovery refreshes for newly launched apps and dialogs without restarting the assistant session.

### App moves & multiple copies

Routing follows the associated signed app installation after a move. Helpers from another copy are rejected. Intentional quit/resume and saved editable work retain their native behavior.

### Recovery without duplicate edits

Operation receipts recover results after interrupted responses. Identical retries return the original result rather than repeating a committed edit. The reviewed verification corpus includes 275 core tests and 38 native suites, alongside Debug and Release builds.


## Choose the approach that fits the work

| Your outcome | Snapperon local MCP | Manual Mac screenshot apps | Custom scripts | Image-gen models |
| --- | --- | --- | --- | --- |
| Screenshot pixels | Original source retained; lossless PNG available | Original source generally retained | Depends on implementation and encoding | May change UI text and image details |
| Annotation design | Native presets and every reviewed style option | Varies by app | You design and maintain it | Generated appearance; exact details can vary |
| MCP automation | 18 local commands, tested in Claude Desktop & Codex Desktop | Depends on the app; no universal MCP interface | Requires your own tools/integration | Depends on the model/client |
| Context efficiency | 57% smaller editing schema; on-demand discovery tested | No standard command schema | Depends on your integration | Depends on image/model context |
| Visual preview loop | Rendered staged preview before commit | Manual inspection in the editor | Must be implemented | Generate and inspect another image |
| Human edits afterward | Individual layers editable in Snapperon | Usually editable in the current editor | Raster output is typically flattened | Output image is typically flattened |
| Privacy | Local app; chosen AI client may share inspected images | Depends on the app and sharing settings | Depends on execution and services used | Depends on the model provider |

## Honest scope, permissions and current limits

macOS 14 (Sonoma) or later on Apple silicon (M1 or newer). No Intel Macs, Windows or Linux. Local desktop MCP controls the installed app; no hosted cloud API or headless remote server. Still images and PDF pages; PNG/JPEG output. No PDF re-export, video recording, scrolling capture or general OCR/text-copy workflow.

Snapperon runs the MCP interface locally on your Mac and does not upload screenshots to Snapperon servers. If your assistant inspects a source image or rendered preview, your chosen AI client may send it to its provider under that client’s settings and policies.

Assistant Connections enables native app access shared by local assistants; it is not per-client identity isolation. macOS Screen Recording approval, authorized window/display sources, approved export folders and clipboard permissions still apply. Account/payment and operating-system approval dialogs require human interaction.

Source inspection can include original pixels beneath editable redactions. Flattened redacted output does not embed the original. Do not give an assistant an unredacted source if it must not receive those pixels. Review the rendered result before sharing.

Editable assistant documents and recovery records may persist locally across quit/reconnection. Recovery uses original operation receipts to avoid duplicate edits. Turning a connection off revokes access; native retired-file maintenance removes work from earlier grants.

This is local MCP control of the installed Mac app, not hosted/remote cloud execution.

In Claude Desktop testing, raw chat-attachment byte transfer failed on the client side. Use Snapperon’s native Open File dialog to select a local image or PDF, or capture an authorized Mac window or display. Do not rely on raw chat-attachment byte transfer.

Local MCP control works without an account in Free and Pro. Standard plan rules still apply: Free includes up to 10 screenshots/day, core styles, Solid redaction and a Snapperon watermark on saved/shared images. Pro adds unlimited captures, the full style and redaction library, and a custom watermark or none.

Free is $0. Pro is $2/month, $19.99/year (about $1.67/month, save about 17%) or $38.99 one-time. Installation starts a 3-day Pro trial with no credit card, no account and no automatic charge. Direct-download and Mac App Store licenses are separate.

## Local MCP: questions answered

### How does Snapperon’s AI / MCP support work?

Snapperon includes a built-in local Model Context Protocol (MCP) server with 18 commands, tested in Claude Desktop and Codex Desktop. Assistants open local images or PDFs, capture authorized windows, add native callouts or redactions, preview the result, and export or copy. Other clients have not been verified here.

In Claude Desktop, use native Open File for local images/PDFs or capture Mac windows and displays. Raw chat-attachment byte transfer failed in client testing.

### Can I edit or undo annotations after Claude or Codex places them?

Yes. MCP controls the real native Snapperon editor. Every arrow, label, counter and shape remains an editable layer. Move, resize or restyle it by hand. Press Undo once to revert an entire committed AI batch. PNG/JPEG output is flattened; the layers remain in the editor.

### Does using MCP upload my screenshots to Snapperon servers?

Snapperon runs the MCP interface locally on your Mac and does not upload screenshots to Snapperon servers. If your assistant inspects a source image or rendered preview, your chosen AI client may send it to its provider under that client’s settings and policies.

Enable access in Assistant Connections. Local assistants share the access you enable; macOS Screen Recording, authorized windows/displays, approved export folders and clipboard permissions still apply. This is local Mac app control, not a hosted cloud API.

### Why use Snapperon MCP instead of AI image generators or Python scripts?

Image generators can alter screenshot details and UI text. Scripts vary in quality and commonly produce flattened output. Snapperon keeps the original source, applies native styles and auto-fitting labels, and lets the assistant preview before committing. You can adjust layers by hand and finish with Copy + Close.

### Is local MCP included in Free and Pro?

Local MCP control works without an account in Free and Pro. Standard plan rules still apply: Free includes up to 10 screenshots/day, core styles, Solid redaction and a Snapperon watermark on saved/shared images. Pro adds unlimited captures, the full style and redaction library, and a custom watermark or none.

Free is $0. Pro is $2/month, $19.99/year (about $1.67/month, saving about 17%) or $38.99 one-time. Installation starts a 3-day Pro trial with no account, credit card or automatic charge. Direct-download and Mac App Store licenses are separate.

### How do I connect Claude Desktop or Codex Desktop?

Open Snapperon Settings → Assistant Connections and select Enable AI assistants. Use Copy Codex Setup or Copy Claude Desktop Setup for the exact installed app. Merge that entry into your client’s existing configuration, preserving other servers, then reconnect local MCP servers.

Codex’s copied entry belongs in config.toml; Claude Desktop’s belongs in mcpServers in claude_desktop_config.json. Choose Export Folder for file saves. Troubleshooting → Save Connection Diagnostics creates a report without image content or private arguments.

### Can it run on Intel Macs, Windows, Linux or a hosted server?

No. Snapperon requires macOS 14 (Sonoma) or later and Apple silicon (M1 or newer). MCP controls the installed Mac app locally. It is not a hosted API or a headless Linux service.

### Can I annotate PDFs, record video, capture scrolling pages or copy text with OCR?

You can open a PDF and annotate its pages, then copy or export PNG/JPEG images. PDF re-export, video recording, scrolling capture and a general OCR/text-copy workflow are not offered. Your AI client may inspect visible text in an image; that is separate from Snapperon offering OCR.


## References

[Product and download](https://snapperon.com/) · [Compare apps](https://snapperon.com/compare/) · [Full product reference](https://snapperon.com/llms-full.txt) · [Local MCP discovery metadata](https://snapperon.com/.well-known/mcp.json)
