# SimplyPrint: 3D Print Farm Management (remote · simplyprint.io)

3D print farm management for AI. Monitor, queue, and control prints on your SimplyPrint account.

- Trust score: 77/100 (medium)
- Change this week: +11
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `simplyprint.io`: 77/100 (this document), [markdown](https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp.md), [page](https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp)

## Channel facts

- Endpoint: `https://simplyprint.io/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 92/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 6898 tokens (~97/item across 71 items; 71 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 80/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 39% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http io-simplyprint-simplyprint https://simplyprint.io/api/mcp
```

### Codex

```toml
[mcp_servers.io-simplyprint-simplyprint]
url = "https://simplyprint.io/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-simplyprint-simplyprint": {
      "type": "remote",
      "url": "https://simplyprint.io/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-simplyprint-simplyprint --url https://simplyprint.io/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-simplyprint-simplyprint:
    url: "https://simplyprint.io/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "io-simplyprint-simplyprint": {
      "type": "http",
      "url": "https://simplyprint.io/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 77, +1)

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

### 2026-08-01 (score 76, +1)

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

### 2026-07-31 (score 75, +6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +1)

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

### 2026-07-28 (score 67, +1)

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

### 2026-07-27 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (71)

### `list_printers` (~528 tokens)

List MULTIPLE printers with optional filters. For details on a single known printer, call get_printer instead — do not list-then-filter. For farm-wide counts ("how many printers are doing X"), call get_farm_overview instead — do not paginate this. Use status=["online"] to only see reachable printers, status=["printing"] for ones actively printing, status=["was_printing_when_offline"] for printers that dropped mid-print, status=["idle"] for available printers ready to accept a job, status=["awaiting_bed_clear"] for printers whose last print finished but the bed has not been cleared yet (NOT print_pending, which means a queued staggered start).

Input parameters:

- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `filament_columns` (string)
- `group_id` (integer): Only return printers in this printer group
- `job_columns` (string)
- `limit` (integer): Cap on results (1-100). Alias for page_size. Use this with sort_by for "top N" queries.
- `order_by` (string)
- `out_of_order` (boolean): If true, only out-of-order printers; if false, only in-order printers (enterprise feature)
- `page` (integer): Page number (1-based) when paginating beyond limit/page_size.
- `page_size` (integer)
- `printer_columns` (string)
- `search` (string)
- `sort_by` (string): Sort by this field. Default: stable (no sort).
- `sort_dir` (string): Sort direction; default asc when sort_by is set.
- `sort_id` (string)
- `status` (array): Filter by status. Multiple values are OR-matched. Macros (derived): online, offline, idle, was_printing_when_offline, in_maintenance, print_pending, can_accept_commands, awaiting_bed_clear. Raw Print…
- `tags` (array): Filter printers that have any of the given tag names

### `get_printer` (~134 tokens)

Get details, status, temps, current job, filament, notifications for ONE specific printer by id. Use this (not list_printers) whenever the user asks about a single printer they've already identified — "status of printer X", "what's printer 5 doing", "temperature on Creality K2". Cheaper and less noisy than listing all printers.

Input parameters:

- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `printer_id` (string, required)

### `get_farm_overview` (~185 tokens)

One-shot summary of farm-wide printer state. Use this (NOT list_printers) when the user asks "how many printers are printing/idle/awaiting bed clear/etc." or "what is the state of the farm". Returns a total and {count, printers:[{id,name}]} for each bucket: online, offline, not_connected, operational (idle), printing, paused, awaiting_bed_clear (a print finished but the bed has not been cleared yet — printer is online + operational + still has a job; this is NOT print_pending), in_maintenance, print_pending (a queued staggered/scheduled start), requires_attention (has unresolved error notifications), ai_running, ai_detected_low, ai_detected_high. Counts overlap intentionally: a printer can be in "online" + "printing" + "ai_running" at once.

### `pause_print` (~32 tokens)

Pause the current print on a printer

Input parameters:

- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)

### `resume_print` (~32 tokens)

Resume a paused print on a printer

Input parameters:

- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)

### `cancel_print` (~133 tokens)

Cancel the current print on a printer

Input parameters:

- `comment` (string): Optional comment explaining why the print was cancelled. May be required depending on organization settings.
- `custom_position` (integer): Custom sort position when return_position is 'custom'.
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `reason` (integer): Cancel reason ID. May be required depending on organization settings.
- `return_position` (string): Position to insert queue item at when returning to queue.
- `return_to_queue` (boolean): Whether to return cancelled queued print to the queue. Uses organization default if not specified.

### `send_gcode` (~127 tokens)

Send G-code commands to a printer

Input parameters:

- `gcode` (array): Array of G-code commands to send. Either gcode, macro, or snippet_id is required.
- `macro` (string): Predefined macro name to execute. Either gcode, macro, or snippet_id is required.
- `macro_context` (array): Optional context data for macro execution.
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `snippet_id` (integer): ID of a gcode snippet to send. Either gcode, macro, or snippet_id is required.

### `create_print_job` (~417 tokens)

Start a print job on one or more printers. File source is exactly one of: file_id (API file hash from upload), filesystem (user-file uid), queue_file (existing queue item id), reprint (previous print-job id), or next_queue_item=true (auto-pick the next matching queue item per printer, deduplicated across printers). Supports PRINT_JOB custom fields (shared and per-printer). Auto-starts when the account's autostartPrints setting is on (default).

Input parameters:

- `custom_fields` (array): PRINT_JOB custom fields shared across all started jobs. Each entry is an object with customFieldId (string uuid) and value (one-of string/number/boolean/date/options).
- `file_id` (string): Hex bucket hash returned by the files.simplyprint.io Upload endpoint. Choose this when starting from a file uploaded via the API.
- `filesystem` (string): UserFile.uid of an existing library file. Choose this when starting from an already-imported file.
- `individual_custom_fields` (array): Per-printer or per-queue-item PRINT_JOB custom fields. Each entry: {id: <string>, value: [customFieldSubmissions]}.
- `mms_map` (string)
- `next_queue_item` (boolean): If true, auto-pick the next matching queue item for each printer in pid. Uses the same compatibility matcher as get_next_queue_items_for_printers. Mutually exclusive with file_id/filesystem/queue_fil…
- `printer_id` (string, required): Comma-separated printer id(s) to start the job on. Must be operational. When next_queue_item=true, each printer gets a different queue item (same item never duplicated within one call).
- `queue_file` (integer): Existing print queue item id. Choose this to start the job from a queued item (most common flow).
- `reprint` (integer): Previous print_job id to reprint with the same file and settings.
- `start_options` (string)

### `home_printer` (~102 tokens)

Home the printer axes (move to origin position)

Input parameters:

- `axes` (string): Axes to home, space-separated. Examples: "X Y Z" (all), "X Y" (XY only), "Z" (Z only)
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `snippet_id` (integer): ID of a gcode snippet to send. Either gcode, macro, or snippet_id is required.

### `move_printer_axis` (~145 tokens)

Move a printer axis to a relative position

Input parameters:

- `direction` (string, required): Axis and direction to move. Use axis letter, optionally with minus for negative. Examples: "X" (+X), "X-" (-X), "Y", "Y-", "Z", "Z-"
- `distance` (number, required): Distance to move in millimeters
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `snippet_id` (integer): ID of a gcode snippet to send. Either gcode, macro, or snippet_id is required.
- `speed` (number): Movement speed in mm/min. If not specified, uses printer default.

### `set_printer_fans` (~90 tokens)

Control the printer cooling fans

Input parameters:

- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `snippet_id` (integer): ID of a gcode snippet to send. Either gcode, macro, or snippet_id is required.
- `speed` (integer, required): Fan speed from 0 (off) to 255 (full speed). Use 0 to turn fans off.

### `set_printer_motors` (~94 tokens)

Enable or disable the printer stepper motors

Input parameters:

- `enabled` (string, required): Motor state: "on" to enable motors (lock axes), "off" to disable (allow manual movement)
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `snippet_id` (integer): ID of a gcode snippet to send. Either gcode, macro, or snippet_id is required.

### `set_printer_temperatures` (~227 tokens)

Set target temperatures (nozzle, bed and/or chamber) on one or more printers - works while idle and mid-print. Values above the printer model maximum are clamped; 0 turns a heater off.

Input parameters:

- `bed` (integer): Target heated bed temperature in degrees Celsius. 0 turns the bed heater off. Values above the printer model maximum are clamped. At least one of tool, bed or chamber is required.
- `chamber` (integer): Target chamber temperature in degrees Celsius. 0 turns the chamber heater off. Skipped for printers without an actively heated chamber. At least one of tool, bed or chamber is required.
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `tool` (integer): Target nozzle temperature in degrees Celsius. 0 turns the hotend off. Values above the printer model maximum are clamped. At least one of tool, bed or chamber is required.
- `tool_index` (integer): Zero-based tool index for multi-tool printers. Requires tool to be set. Defaults to 0.

### `list_queue` (~409 tokens)

List print queue items with optional filters. Supports filtering by assigned printer(s), group, approval status, tags, queue-item custom-field values, and age. Example: older_than_days=7 for "items added more than 7 days ago", or custom_fields=[{id: "<uuid>", value: "Engineering"}] for a specific department field.

Input parameters:

- `added_after` (string): Items created strictly after this ISO-8601 date
- `added_before` (string): Items created strictly before this ISO-8601 date
- `approval_status` (string): Filter by approval status. Default excludes denied.
- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `custom_fields` (array): Filter by custom field values. Each entry must specify the field id (uuid) and either value (exact match against string/number/boolean/date/options) or contains (case-insensitive substring on text fi…
- `group` (integer): Only return items in this queue group (0 = the ungrouped bucket)
- `newer_than_days` (integer): Items created within the last this many days
- `older_than_days` (integer): Items created more than this many days ago
- `page` (integer)
- `page_size` (integer): Items per page (1-200). Use this as the result-size cap.
- `printer_id` (array): Only return queue items assigned to (via for_printers) any of these printer ids
- `search` (string): Filename substring search
- `sort_by` (string): Sort by this field. Default: sort_position (ascending — matches the queue's display order).
- `sort_dir` (string): Sort direction; default asc.
- `tags` (array): Match items that have any of the given tag names

### `get_queue_item` (~25 tokens)

Get details of a specific queue item

Input parameters:

- `item_id` (integer, required)

### `remove_from_queue` (~31 tokens)

Remove an item from the print queue

Input parameters:

- `job` (integer)
- `jobs` (string)

### `add_to_queue` (~262 tokens)

Queue a file for printing. Pick exactly one file source: fileId (hex hash from the files.simplyprint.io Upload endpoint) or filesystem (UserFile.uid of an existing library file). Supports PRINT_QUEUE custom fields.

Input parameters:

- `amount` (integer): Number of copies to queue. Default 1.
- `custom_fields` (array): PRINT_QUEUE custom fields for the new queue item. Each entry: {customFieldId: string uuid, value: one-of {string, number, boolean, date, options[]}}.
- `fileId` (string): Hex bucket hash returned by the files.simplyprint.io Upload endpoint. Use this when the file was uploaded via the API (recommended for integrations).
- `filesystem` (string): UserFile.uid of an existing library file (use list_files to discover). Either numeric id or UID string is accepted.
- `for_groups` (string)
- `for_models` (string)
- `for_printers` (string)
- `group` (integer): Queue group id to add the item to. Use list_queue_groups to discover available groups.
- `position` (string): Where to insert: "top", "bottom", or a 1-based numeric position.
- `tags` (array)

### `update_queue_item` (~146 tokens)

Update a queue item (amount, note, custom print time, material usage, printer assignments).

Input parameters:

- `amount` (integer)
- `deadline` (string)
- `for_groups` (string)
- `for_models` (string)
- `for_printers` (string)
- `infinite` (boolean)
- `material_usage` (number)
- `max_concurrent_printers` (integer)
- `note` (string)
- `paused` (boolean)
- `persistent` (boolean)
- `printed` (integer)
- `priority` (string)
- `queue_item_id` (integer, required)
- `time` (integer)

### `reorder_queue_item` (~45 tokens)

Move a single queue item to a new 1-based position.

Input parameters:

- `from` (integer)
- `queue_item_id` (integer, required)
- `to` (integer, required)

### `move_queue_item` (~37 tokens)

Move one or more queue items to a different queue group.

Input parameters:

- `jobs` (string, required)
- `target_group_id` (integer, required)

### `revive_queue_item` (~68 tokens)

Bring a completed (done) queue item back to the active queue.

Input parameters:

- `amount` (integer)
- `group` (integer)
- `position` (string)
- `position_index` (integer)
- `priority` (string)
- `queue_item_id` (integer, required)

### `empty_queue` (~50 tokens)

DESTRUCTIVE: Delete all items from the queue (optionally filtered by group or done-only). Confirm with the user before calling.

Input parameters:

- `done_items` (boolean)
- `group` (integer)

### `inspect_printer_queue` (~49 tokens)

Show which queue items match/miss a specific printer and why. Useful for diagnosing why a queue item will not print.

Input parameters:

- `mode` (string)
- `printer_id` (string, required)

### `get_queue_item_cost` (~59 tokens)

Calculate the estimated cost of a queue item, optionally for a specific printer.

Input parameters:

- `item_id` (integer)
- `mms_map` (array)
- `printer_id` (integer)
- `queue_item_id` (integer, required)

### `get_next_queue_item` (~174 tokens)

Find the best-matching queue item(s) for a set of printers using SimplyPrint's compatibility matcher.

Input parameters:

- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `deselects` (string)
- `filters` (array)
- `includeTodoSummary` (boolean)
- `mustClearBed` (boolean)
- `normalOnly` (boolean)
- `printer_id` (integer, required): The printer IDs (comma-separated for multiple)
- `queueGroupsOrder` (array)
- `settings` (array)
- `skippedQueueItems` (array)
- `sorting` (array)
- `specificQueueGroups` (array)

### `get_next_queue_items_for_printers` (~173 tokens)

Read-only preview: for each given printer, return the next queue item that would be started. Uses the same dedup matcher as create_print_job with next_queue_item=true, so the same queue item is never returned twice across printers in one call. Includes match failures per printer (issues) so you can explain why a printer has nothing to print. Does NOT start any job.

Input parameters:

- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `printer_id` (string, required): Comma-separated printer id(s). Does not need to be operational — offline printers return their would-be match too, so you can see what's waiting for them.

### `list_queue_groups` (~26 tokens)

List all queue groups in the user's account.

Input parameters:

- `item_id` (integer)

### `save_queue_group` (~20 tokens)

Create a new queue group or update an existing one.

### `delete_queue_group` (~42 tokens)

Delete a queue group. Optionally move its items to another group via move_to.

Input parameters:

- `item_id` (integer, required)
- `move_to` (integer)

### `reorder_queue_group` (~33 tokens)

Move a queue group to a new position.

Input parameters:

- `group_id` (integer, required)
- `to` (integer, required)

### `list_pending_queue_items` (~50 tokens)

List queue items pending approval (status: PENDING, DENIED, or REVISION).

Input parameters:

- `page` (integer)
- `per_page` (integer)
- `status` (string)

### `approve_queue_item` (~48 tokens)

Approve one or more pending/revision/denied queue items, with optional comment.

Input parameters:

- `comment` (string)
- `job` (integer)
- `jobs` (string)

### `deny_queue_item` (~58 tokens)

Deny a pending queue item, either removing it or requesting revisions. Include a comment explaining the decision.

Input parameters:

- `comment` (string)
- `job` (integer)
- `jobs` (string)
- `remove` (boolean)

### `send_back_for_revision` (~45 tokens)

Revoke approval on an already-approved item and send it back to the submitter for revisions.

Input parameters:

- `comment` (string)
- `queue_item_id` (integer, required)

### `resubmit_queue_item` (~50 tokens)

Resubmit a denied or revision-requested queue item back to pending approval. File-replacement is not supported via MCP.

Input parameters:

- `comment` (string)
- `queue_item_id` (integer, required)

### `list_queue_comments` (~37 tokens)

Retrieve all approval comments on a queue item or user file.

Input parameters:

- `file_id` (string)
- `item_id` (integer)

### `add_queue_comment` (~63 tokens)

Add a comment (general or feedback) to a queue item or user file. File attachments are not supported via MCP.

Input parameters:

- `comment` (string)
- `file_id` (string)
- `item_id` (integer)
- `type` (string)

### `update_queue_comment` (~31 tokens)

Edit an approval comment you authored.

Input parameters:

- `comment` (string, required)
- `item_id` (integer, required)

### `delete_queue_comment` (~33 tokens)

Delete an approval comment you authored (or any comment if you have the permission).

Input parameters:

- `item_id` (integer, required)

### `list_custom_fields` (~72 tokens)

List custom field definitions with pagination and search.

Input parameters:

- `end_date` (number)
- `page` (integer, required)
- `page_size` (integer, required)
- `search` (string)
- `sort_dir` (string)
- `sort_id` (string)
- `start_date` (number)

### `list_custom_fields_for` (~60 tokens)

List custom field definitions for a specific entity category and optional sub-category (e.g. PRINT + PRINT_QUEUE for queue-item custom fields).

Input parameters:

- `category` (string, required)
- `includeDisabled` (string)
- `subCategory` (string)

### `set_custom_field_values` (~77 tokens)

Set custom field values on one or more entities (queue items, files, printers, etc.). Use this to set a "deadline" or similar field across many queue items at once.

Input parameters:

- `category` (string, required)
- `entityIds` (array, required)
- `subCategory` (string)
- `values` (array, required)

### `list_files` (~326 tokens)

List files and folders in the user's SimplyPrint storage. With pid set, only returns files compatible with that printer (full compatibility check). With global_search=true (default), searches recursively across all folders.

Input parameters:

- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `f` (integer): Folder id to list (0 or omitted = root)
- `global_search` (boolean): If true (default), search recursively across all folders instead of only the current one
- `has_gcode` (boolean): true = only files with a parsed G-code analysis (printable); false = only non-printable files (models, etc.)
- `limit` (integer): Cap on returned files (1-500). Useful with sort_by for "5 largest files" or "10 most recent".
- `printer_id` (integer): Only return files compatible with this printer (full compatibility check, not just model)
- `search` (string): Filename substring search. Matches with or without extension — "Schleife oben 1_PLA_1h4m" and "Schleife oben 1_PLA_1h4m.3mf" both find the same file.
- `sort_by` (string): Sort files by this field (folders are not affected). Default: repository order (user's saved files-page sort).
- `sort_dir` (string): Sort direction; default desc (newest/largest first).

### `get_folder` (~24 tokens)

Get a folder's details including permissions.

Input parameters:

- `item_id` (integer, required)

### `estimate_file_cost` (~63 tokens)

Estimate the print cost of a file, optionally for a specific printer.

Input parameters:

- `analysis` (array)
- `item_id` (string)
- `mms_map` (array)
- `newFile` (boolean)
- `printer_id` (integer)

### `match_file_to_printers` (~42 tokens)

Find which printer models in the account are compatible with a given file.

Input parameters:

- `gcodeAnalysis` (array)
- `model` (string, required)

### `set_file_printers` (~50 tokens)

Set the printers/models/groups a file is assigned to.

Input parameters:

- `groups` (array)
- `items` (array, required)
- `models` (array)
- `printers` (array)

### `update_file` (~72 tokens)

Update file metadata such as name and GCODE analysis.

Input parameters:

- `analysis` (array)
- `item_id` (string, required)
- `name` (string)
- `printer_groups` (string)
- `printer_models` (string)
- `printers` (string)
- `remove_thumbnail` (boolean)

### `create_folder` (~63 tokens)

Create a new folder (or edit an existing one with optional org-level permissions).

Input parameters:

- `item_id` (integer)
- `name` (string, required)
- `org` (boolean)
- `org_perms` (array)
- `parent_folder` (integer, required)

### `delete_folder` (~21 tokens)

Delete one or more folders.

Input parameters:

- `folder` (string, required)

### `move_file` (~31 tokens)

Move one or more files to a folder.

Input parameters:

- `files` (string, required)
- `folder` (integer, required)

### `move_folder` (~29 tokens)

Move a folder to another location.

Input parameters:

- `folder` (integer, required)
- `target` (integer, required)

### `delete_file` (~21 tokens)

Delete one or more files.

Input parameters:

- `file` (string, required)

### `get_slicer_settings_for_file` (~28 tokens)

Retrieve slicer settings stored for a file.

Input parameters:

- `file` (string, required)

### `list_filaments` (~422 tokens)

List filament spools with optional filters and sorting. Accounts often have hundreds of spools, so ALWAYS pair sort_by with a limit. Use sort_by=last_used + limit=10 for "most used / most popular spool" questions. Use sort_by=created + limit=N for recently added. Use sort_by=left for emptiest/fullest. Filters (material_type/brand/color) are case-insensitive substring matches. If the user names a specific spool by id or 4-character short id (e.g. "T2SO"), call get_filament instead — do NOT list and grep. Amount-remaining fields: report weight from leftGrams/totalGrams (grams) and percentLeft (%), NOT the raw total/left which are internal filament LENGTH in mm. density (g/cm³) is the value used for the gram conversion; densityIsEstimated=true means the spool has no material profile so a default density was assumed.

Input parameters:

- `assigned` (boolean): true = only spools assigned to a printer; false = only unassigned spools
- `brand` (string): Brand name substring
- `color` (string): Color substring — matches hex, name, or color group
- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `empty` (boolean): true = only empty spools; false = only non-empty spools
- `limit` (integer): Cap on number of spools returned after sorting/filtering. Use this with sort_by to grab e.g. the 3 newest.
- `material_type` (string): Material type substring (e.g. "PLA", "PETG")
- `printer_id` (integer): Only spools assigned to this printer id
- `sort_by` (string): Field to sort by. Defaults to created (newest first).
- `sort_dir` (string): Sort direction. Defaults to desc.

### `get_filament` (~122 tokens)

Get details of one specific filament spool. Use this (NOT list_filaments+grep) when the user names a spool by id or short id. Accepts spool_id (the integer DB id) or spool_short_id (the 4-character code shown on QR labels and the spool view page, e.g. "T2SO", "M0WT").

Input parameters:

- `company_id` (integer)
- `locationscount` (boolean)
- `public` (boolean)
- `spool_id` (integer)
- `spool_short_id` (string)

### `adjust_filament_weight` (~93 tokens)

Adjust the remaining weight of a filament spool (e.g. after manual weighing).

Input parameters:

- `empty_spool_weight` (integer)
- `filament_id` (integer, required): The filament ID
- `grams_remaining` (number)
- `percent_left` (number)
- `save_empty_spool_weight` (boolean)
- `subtract_empty_spool` (boolean)
- `weighed_gross` (number)

### `assign_filament` (~66 tokens)

Assign a filament spool to a printer (or a specific extruder slot).

Input parameters:

- `extruder` (array)
- `filament_id` (integer, required): The filament IDs (comma-separated for multiple)
- `printer_id` (integer, required): The printer ID
- `source` (string)

### `unassign_filament` (~45 tokens)

Remove a filament spool from its printer assignment.

Input parameters:

- `filament_id` (integer, required): The filament ID
- `location_id` (integer)
- `source` (string)

### `get_filament_history` (~57 tokens)

Retrieve the usage history of a filament spool.

Input parameters:

- `item_id` (integer)
- `page` (integer)
- `perPage` (integer)
- `public` (boolean)
- `user_id` (string)

### `mark_filament_dried` (~48 tokens)

Mark a filament spool as freshly dried (resets humidity tracking).

Input parameters:

- `dried_at` (string)
- `filament_id` (integer, required): The filament IDs (comma-separated for multiple)

### `list_filament_colors` (~25 tokens)

List available filament colors (for UI pickers or picking similar spools).

### `list_brand_filaments` (~26 tokens)

List filament products from a specific brand.

Input parameters:

- `item_id` (integer, required)

### `list_print_jobs` (~344 tokens)

List past print jobs with pagination, filters, and sort. Compact mode (default) drops gcodeAnalysis, filament breakdowns, and panel-only flags.

Input parameters:

- `accepted_statuses` (array): Filter by job status. Multiple values OR-matched.
- `archived_status` (string): null (default): hide archived; archived: only archived; both: include archived
- `compact` (boolean): Keep at default true. Returns minimal data tuned for AI context. Only set to false if you specifically need fields the compact view drops, and then pair with limit to keep the response small.
- `end_date` (string): Latest start (ISO-8601)
- `limit` (integer): Cap on results per page (1-100). Alias for page_size.
- `page` (integer, required): Page number (1-based)
- `page_size` (integer, required): Items per page (1-100)
- `printer_groups` (array): Only jobs from printers in these groups
- `printer_ids` (array): Only jobs from these printer ids
- `printer_types` (array)
- `queue_job` (integer)
- `search` (string): Filename / UID / custom-field substring search
- `sort_by` (string): Sort by this field. Default: started date desc (newest first).
- `sort_dir` (string): Sort direction; default desc.
- `sort_id` (string)
- `spool_id` (integer): Only jobs that used this filament spool
- `start_date` (string): Earliest start (ISO-8601)
- `user_ids` (array): Only jobs started by these users (requires VIEW_ALL_PRINT_HISTORY)

### `get_print_job` (~42 tokens)

Get detailed info for a specific print job.

Input parameters:

- `extra` (string)
- `getcustomfields` (string)
- `item_id` (string, required)

### `archive_print_job` (~34 tokens)

Archive a print job (hide from default history listings).

Input parameters:

- `jobs` (array, required)
- `reason` (string)

### `unarchive_print_job` (~23 tokens)

Restore an archived print job.

Input parameters:

- `jobs` (array, required)

### `get_account_statistics` (~88 tokens)

Account-level print statistics (success rate, filament used, print time, cost) with optional date range and user/printer filters.

Input parameters:

- `end_date` (string)
- `fake_data` (boolean)
- `general` (boolean)
- `printer_models` (array)
- `printers` (array)
- `start_date` (string)
- `users` (array)

### `get_maintenance_dashboard` (~24 tokens)

Overview of maintenance jobs, problems, inventory, and printer maintenance status.

### `get_referral_stats` (~21 tokens)

Referral program statistics: conversions, earnings, pending payout.

### `get_webhook_sample` (~96 tokens)

Get one or more realistic sample webhook payloads for a specific event type, matching the envelope a live webhook delivery would produce. Used by integration platforms (Activepieces, n8n, Zapier) to show the payload shape before any real event fires. Falls back to synthetic data when no applicable entity exists in the account.

Input parameters:

- `event` (string, required)
- `limit` (integer)
- `version` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp#diagnostics

## Score history

- 2026-08-03: 77
- 2026-08-02: 76
- 2026-08-01: 76
- 2026-07-31: 75
- 2026-07-30: 69
- 2026-07-29: 68
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 66

## Links

- Remote endpoint: https://simplyprint.io/api/mcp
- Repository: https://github.com/simplyprint/simplyprint-claude-plugin
- Website: https://simplyprint.io/
- Changelog RSS feed: https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/io-simplyprint-simplyprint/api-mcp
