Ultralytics Platform MCP
NPM · ULTRALYTICS-MCP
MCP server for Ultralytics Platform projects, datasets, training, prediction, exports, and models.
Available components
Last scanned (17 hours ago)
Scores higher than 90% of npm servers
Category AI and Machine Learning
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 Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 94 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to amanharshx/ultralytics-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 7 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability73
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7002 tokens (~159/item across 44 items; 44 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 Management47
- Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 44 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
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.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Oct 26 +5
- Stability: unverified → 0.37 ▲ functional
- 3 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 2 Oct 26 66
First indexed and scored.
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 16 Oct 2026 · Analysed npm/ultralytics-mcp@0.1.14
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | amanharshx/ultralytics-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/amanharshx/ultralytics-mcp/.github/workflows/release.yml@refs/heads/main |
| Rekor log index | 3046196822 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:7c5bf9c104fd052aa416b96386ef8ee7aeb450ed977a0185142cc2803fad88d2a82d2c2952530927627f765eb77b660763686fd76d2b2af3466e1f47d |
Background: How many MCP packages publish verified provenance →
Dependencies 94 packages
| Packages resolved | 94 |
|---|---|
| Stale | 31 |
| 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 →
auto_annotate_start ~519
Start an auto-annotation run on a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI, labelling it with a model given by owner/project/model, ul://owner/project/model, or slug with a project (state-changing, billable, may cost credits). Requires confirm_cost=true: there is no cost preview, no published rate, and a 402 signals insufficient credits; gauge magnitude with datasets_get (the unlabeled image count by default, the total count when include_annotated is true). Sends only modelId plus any of confidence, iou, class_mapping, and include_annotated the caller sets explicitly, omitting the rest so the server's own defaults (confidence 0.25, iou 0.7, include_annotated false, illustrative only) apply undisturbed. There is no imgsz parameter. class_mapping bridges a model/dataset class-taxonomy mismatch (for example a 1-class model against an 80-class dataset, which otherwise fails outright); it passes through with no length check. Labels are additive, never overwritten, so no overwrite confirmation is needed. Every start snapshots a dataset version before labelling, listed via datasets_get and undoable exactly with dataset_version_restore. Billing settles at run time, not at dismissal, so auto_annotate_stop does not refund a charge already incurred. Use auto_annotate_status to poll and auto_annotate_stop to cancel.
| Name | Type | Req | Description |
|---|---|---|---|
| class_mapping | array | – | Model class index -> dataset class index mapping, positioned by model class index. Required to bridge a class-taxonomy mismatch between the model and the dataset; passed through with no length check. |
| confidence | number | – | Confidence threshold for generated labels. Omit to use the server default (currently 0.25). |
| confirm_cost | boolean | – | Must be true to allow a credit-costing auto-annotation run. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| include_annotated | boolean | – | Re-label images that already carry annotations. Omit to use the server default (currently false). |
| iou | number | – | IoU threshold for generated labels. Omit to use the server default (currently 0.7). |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
auto_annotate_status ~116
Get an auto-annotation run's status for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Surfaces activeJob and lastRun unmodified: both null means the dataset has never run one; activeJob carries progress for a run in flight; lastRun carries failed/stopped booleans plus results, or an error when the run failed.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
No output schema declared.
No examples provided.
auto_annotate_stop ~180
Stop or dismiss a dataset's auto-annotation run by slug, owner/slug, or a ul://owner/datasets/slug URI. Reads status first and refuses without calling the endpoint when no run is active, since there is nothing to stop. When a run is active it sends the request and surfaces the server's own action verbatim rather than inferring it: cancelled for an active run stopped mid-flight, dismissed for a terminal run's summary being cleared, or none if nothing acted on. Ships ungated, consistent with training_cancel and export_cancel: an off-switch is never gated. An undismissed terminal run does not block the next start, so this never strands anything; dismissal moves no money.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
No output schema declared.
No examples provided.
dataset_class_stats ~176
Get per-class annotation counts for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. By default omits the bulky histogram and heatmap groups (image size, file size, format, points-per-annotation, bbox distributions, and location/dimension heatmaps), naming them in the summary; pass include_histograms: true to get the full payload unmodified.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| include_histograms | boolean | – | Include the histogram and heatmap groups omitted by default (image size, file size, format, points-per-annotation, bbox distributions, and location/dimension heatmaps). Off by default because the pay… |
No output schema declared.
No examples provided.
dataset_export ~82
Get a time-limited export download link for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI, for the latest export or one frozen version.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| version | number | – | Saved version number. |
No output schema declared.
No examples provided.
dataset_images_list ~176
List images in a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI with optional filtering.
| Name | Type | Req | Description |
|---|---|---|---|
| classIds | array | – | Class IDs to filter by. An empty array is treated as no filter (all images match), not as a filter that excludes everything. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| hasLabel | boolean | – | Filter by annotation state. |
| includeImageUrls | boolean | – | Include signed full-size image URLs. |
| limit | number | – | Maximum images to return. |
| offset | number | – | Images to skip. |
| search | string | – | Image name or metadata search. |
| split | string | – | Dataset split to filter by, for example train, val, or test. |
No output schema declared.
No examples provided.
dataset_ingest ~159
Start a remote URL ingest job for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Defaults conflictPolicy to skip (the platform default is undocumented). Reports the queued job id with the dataset's current ingest status; use datasets_get to follow up.
| Name | Type | Req | Description |
|---|---|---|---|
| conflictPolicy | string | – | Conflict policy, e.g. "skip" (default), "keep_both", or "replace". Server-validated. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| sourceUrl | string | yes | Remote dataset archive or NDJSON URL. |
| targetSplit | string | – | Target split for new images (overrides archive structure). |
No output schema declared.
No examples provided.
dataset_upload_file ~162
Upload a local dataset archive through the signed-upload flow for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Defaults conflictPolicy to skip (the platform default is undocumented). Reports the queued job id with the dataset's current ingest status; use datasets_get to follow up.
| Name | Type | Req | Description |
|---|---|---|---|
| conflictPolicy | string | – | Conflict policy, e.g. "skip" (default), "keep_both", or "replace". Server-validated. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| file_path | string | yes | Local path to dataset archive file. |
| targetSplit | string | – | Target split for new images (overrides archive structure). |
No output schema declared.
No examples provided.
dataset_upload_folder ~182
Upload a local image folder as a zip through the signed-upload flow for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Defaults conflictPolicy to skip (the platform default is undocumented). Reports the queued job id with the dataset's current ingest status; use datasets_get to follow up.
| Name | Type | Req | Description |
|---|---|---|---|
| conflictPolicy | string | – | Conflict policy, e.g. "skip" (default), "keep_both", or "replace". Server-validated. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| folder_path | string | yes | Local path to image folder. |
| targetSplit | string | – | Target split for new images. Rejected if the folder itself has train/val/test subdirectories; use one or the other, not both. |
No output schema declared.
No examples provided.
dataset_upload_video ~204
Upload a local video as extracted frames through the signed-upload flow for a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Defaults conflictPolicy to skip (the platform default is undocumented). Reports the queued job id with the dataset's current ingest status; use datasets_get to follow up.
| Name | Type | Req | Description |
|---|---|---|---|
| conflictPolicy | string | – | Conflict policy, e.g. "skip" (default), "keep_both", or "replace". Server-validated. |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| fps | number | – | Maximum frame extraction rate in frames per second; may be reduced to keep the total within max_frames. |
| max_frames | integer | – | Maximum number of frames to extract. |
| targetSplit | string | – | Target split for new images (overrides archive structure). |
| video_path | string | yes | Local path to source video file. |
No output schema declared.
No examples provided.
dataset_version_create ~91
Create a frozen dataset version snapshot by slug, owner/slug, or a ul://owner/datasets/slug URI. If the dataset is unchanged since the previous snapshot the existing version is returned instead of a new one.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| description | string | – | Optional note describing this snapshot. |
No output schema declared.
No examples provided.
dataset_version_restore ~242
Restore a dataset to a previously saved version by slug, owner/slug, or a ul://owner/datasets/slug URI, and an integer version number. Versions are listed via datasets_get (the versions array, already returned unprojected). This REPLACES the dataset's current images, labels, and splits with that snapshot outright: anything done since that version, including un-versioned manual annotation work, is discarded. Ships ungated anyway, since it is the undo tool — an auto-annotate run snapshots a version before labelling, so restoring that version undoes the run exactly, and a mistaken restore is itself recoverable by restoring a later version. Restore also reassigns image IDs: a pre-restore image ID still resolves afterward but returns an empty label array rather than a 404, so callers must re-list images (for example with dataset_images_list) after a restore instead of reusing held IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| version | integer | yes | Version number to restore, as listed in datasets_get's versions array. |
No output schema declared.
No examples provided.
datasets_create ~141
Create a dataset in your Ultralytics workspace. Defaults to private visibility (the platform defaults to public when visibility is omitted).
| Name | Type | Req | Description |
|---|---|---|---|
| classNames | array | – | Initial class names for the dataset. |
| dataset | string | yes | URL slug for the new dataset (distinct from the display name given by name). |
| description | string | – | Dataset description. |
| name | string | yes | Display name. |
| owner | string | – | Workspace owner; defaults to the account owner. |
| task | string | yes | Dataset task. Server-validated; for example detect, segment, or classify. |
| visibility | string | – | Visibility "private" (default) or "public". |
No output schema declared.
No examples provided.
datasets_delete ~88
Delete a dataset by slug, owner/slug, or a ul://owner/datasets/slug URI. Deleting a dataset moves its images and annotations to trash with it; models trained on it are not deleted. Trashed items remain restorable for a bounded window.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
No output schema declared.
No examples provided.
datasets_get ~57
Get details for one dataset by slug, owner/slug, or a ul://owner/datasets/slug URI.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
No output schema declared.
No examples provided.
datasets_list ~52
List datasets in your Ultralytics workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | – | Workspace owner; defaults to the account owner. Takes precedence over username when both are given. |
| username | string | – | Compatibility alias for owner. |
No output schema declared.
No examples provided.
deployment_get ~60
Get details for one deployment by owner/deployment or a bare slug (owner defaults to the account owner). serviceUrl and deployedAt are null until the deployment reaches status ready.
| Name | Type | Req | Description |
|---|---|---|---|
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
No output schema declared.
No examples provided.
deployment_health ~72
Probe one deployment's health by owner/deployment or a bare slug (owner defaults to the account owner). status is the upstream HTTP status the health probe observed at the deployment's own service URL, not the status of this tool call.
| Name | Type | Req | Description |
|---|---|---|---|
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
No output schema declared.
No examples provided.
deployment_logs ~181
Read log entries for one deployment by owner/deployment or a bare slug (owner defaults to the account owner). severity is passed through to the server unvalidated (illustrative values: DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY); an invalid value returns the server's own rejection message. limit defaults to 50, max 200. nextPageToken pages through older entries.
| Name | Type | Req | Description |
|---|---|---|---|
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
| limit | integer | – | Max entries to return (default 50, max 200). |
| pageToken | string | – | Pagination token from a previous call's nextPageToken. |
| severity | string | – | Comma-separated log severity levels, passed through unvalidated (e.g. INFO or WARNING,ERROR). Exact match, not a minimum threshold. |
No output schema declared.
No examples provided.
deployment_metrics ~222
Read metrics for one deployment by owner/deployment or a bare slug (owner defaults to the account owner). The response is one of two shapes selected by sparkline: the default shape carries timeRange (a {start, end} object)/summary/timeSeries, sparkline=true carries requests24h (an array of per-hour points, not a total)/totalRequests/errorRate/avgLatencyMs. The two are never merged; which shape came back is returned as-is. range (e.g. 1h, 24h, 7d; default 24h) is passed through to the server unvalidated.
| Name | Type | Req | Description |
|---|---|---|---|
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
| range | string | – | Time range, passed through unvalidated (e.g. 1h, 24h, 7d; default 24h). |
| sparkline | boolean | – | When true, selects the compact sparkline shape (requests24h, totalRequests, errorRate, avgLatencyMs) instead of the detailed shape. |
No output schema declared.
No examples provided.
deployment_predict ~211
Run inference through a deployment's own serving endpoint on a local image or video file, by owner/deployment or a bare slug (owner defaults to the account owner). Returns images/metadata verbatim, including undocumented metadata fields. No per-request cost is documented for this endpoint; costs follow the deployment's own resource configuration. A cold start on a scaled-to-zero deployment may respond slowly or with a 503 — check deployment_health rather than retrying blindly.
| Name | Type | Req | Description |
|---|---|---|---|
| conf | number | – | Confidence threshold (0.01-1, server default applies if omitted). |
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
| imagePath | string | yes | Local path to an image or video file, uploaded as-is. The server decides which formats it accepts. |
| imgsz | number | – | Inference image size (32-1280, server default applies if omitted). |
| iou | number | – | IoU threshold (0-0.95, server default applies if omitted). |
No output schema declared.
No examples provided.
deployment_stop ~138
Stop a deployment by owner/deployment or a bare slug (owner defaults to the account owner). Sends only {action: stop}; the endpoint's start/resize/replace actions are unreachable from this tool. Stopping preserves the deployment's URL and configuration and still counts toward deployment quota; it is a money-off switch and ships ungated, consistent with training_cancel and export_cancel. Stopping an already-stopped deployment is rejected by the server (400) rather than treated as a success. Reversing this (start) is not available in this tool set.
| Name | Type | Req | Description |
|---|---|---|---|
| deployment | string | yes | Deployment ref by owner/deployment or a bare slug. |
No output schema declared.
No examples provided.
deployments_list ~33
List model deployments in your Ultralytics workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| owner | string | – | Workspace owner; defaults to the account owner. |
No output schema declared.
No examples provided.
explore_datasets ~78
Search public datasets on Ultralytics Explore.
| Name | Type | Req | Description |
|---|---|---|---|
| offset | integer | – | Results to skip. |
| q | string | yes | Search term. |
| sort | string | – | Sort order for results. Server-validated; for example stars or newest. |
| task | array | – | Dataset task filters. Server-validated; for example detect or segment. |
No output schema declared.
No examples provided.
explore_projects ~57
Search public projects on Ultralytics Explore.
| Name | Type | Req | Description |
|---|---|---|---|
| offset | integer | – | Results to skip. |
| q | string | yes | Search term. |
| sort | string | – | Sort order for results. Server-validated; for example stars or newest. |
No output schema declared.
No examples provided.
export_cancel ~162
Cancel an active export job for a model by owner/project/model, ul://owner/project/model, or slug with a project, plus the export id. Checks the export's status first and sends the cancellation only while it is still active, refusing on any terminal status; the same API verb deletes a finished export's artifact irreversibly instead of cancelling it. The status check cannot be atomic: an export that finishes between the check and the request will have its artifact deleted rather than cancelled, and that deletion cannot be undone.
| Name | Type | Req | Description |
|---|---|---|---|
| export_id | string | yes | Export job id. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
export_create ~240
Create a model export job by owner/project/model, ul://owner/project/model, or slug with a project (state-changing, may cost credits). The format is validated immediately by the server; task and architecture compatibility is only known when the job runs, so a queued export can still fail. Use export_status and exports_list for the real outcome. Requires confirm_cost=true.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_cost | boolean | – | Must be true to allow a credit-costing export job. |
| dynamic | boolean | – | Dynamic input shapes. |
| format | string | yes | Requested export format (validated by the server). |
| gpu_type | string | – | GPU type required for TensorRT engine exports. |
| imgsz | number | – | Image size for export. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
| quantize | number|string | – | Export precision. Server-validated; for example 16 or "fp16" for FP16, 8 or "int8" for INT8. Omit to let the exporter choose. |
No output schema declared.
No examples provided.
export_status ~89
Get one export job's status for a model by owner/project/model, ul://owner/project/model, or slug with a project, plus the export id.
| Name | Type | Req | Description |
|---|---|---|---|
| export_id | string | yes | Export job id. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
exports_list ~70
List export jobs for a model by owner/project/model, ul://owner/project/model, or slug with a project.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
gpu_availability ~20
Get current cloud-GPU stock status by GPU type.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
model_download ~153
Download a trained model's weight file to an explicit local path by owner/project/model, ul://owner/project/model, or slug with a project.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string | – | Select which of the model's remote weight files to download by name; does not set the local output filename (use output_path for that). Omit to prefer best.pt, then the first available file. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| output_path | string | yes | Local destination path for downloaded model weights. |
| overwrite | boolean | – | Overwrite an existing file at output_path. |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
model_metrics ~381
Report a model's best training epoch and its reported metrics, labelled so neither can be mistaken for the other (works for private and public projects). bestEpoch, bestFitness, and bestEpochMetrics are stated only when exactly one trainResults record has the reported bestEpoch and that record's fitness exactly equals the reported bestFitness; otherwise all three are null and bestEpochNote keeps the platform's raw values and says why (older Ultralytics versions reported the last epoch as bestEpoch). reportedMetrics is the model's top-level metrics field verbatim; the API does not say which evaluation produced it (on finished Platform-trained runs observed live it matches the post-training evaluation of the best checkpoint, not the last training epoch), so it makes no epoch claim. resultRecordCount counts trainResults records, not epochs. include_train_args adds the full trainArgs object (111 keys observed live), omitted by default. include_history adds the last N records in API order and always states the window it covers, with record counts, the min/max reported epoch, and duplicate and missing epoch numbers in that range.
| Name | Type | Req | Description |
|---|---|---|---|
| history_last_n | integer | – | Limit the history to the last N records in API order (default 20). Truncates a long run to its tail; the response always reports the window it covers (record counts and the min/max reported epoch), s… |
| include_history | boolean | – | Include the trainResults history (per-record epoch and metrics); omitted by default. |
| include_train_args | boolean | – | Include the full trainArgs object; off by default because the platform returns roughly a hundred keys. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
model_plots ~246
Report a model's evaluation plots (per-class pr_curve, f1_curve, precision_curve, recall_curve, confusion_matrix), which model_metrics and training_monitor do not surface. By default lists each plot's type and the shape of its fields (array lengths only, never the values) since one pr_curve alone can carry thousands of numbers on a multi-class model; pass type to get that one plot's data back exactly as the platform returned it, unmodified. Field shapes vary by type: pr_curve/f1_curve/precision_curve/recall_curve carry x/y (and pr_curve additionally ap); confusion_matrix carries a matrix field instead, not x/y/ap. Plot presence does not track training history: a model can have plots with no trainResults, or (rarely) plots: [] on an otherwise completed model.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
| type | string | – | Return this one plot's full data unmodified (e.g. pr_curve, confusion_matrix). Omit to list what's available. |
No output schema declared.
No examples provided.
model_predict ~264
Run inference with a trained model on an image URL or base64 image (`source`), or on a local image or video file (`file_path`). Give exactly one.
| Name | Type | Req | Description |
|---|---|---|---|
| conf | number | – | Confidence threshold (0.01-1, server default applies if omitted). |
| file_path | string | – | Local path to an image or video file, uploaded as-is. The server decides which formats and sizes it accepts. |
| imgsz | number | – | Inference image size (32-1280, server default applies if omitted). |
| iou | number | – | IoU threshold used for NMS (0-0.95, server default applies if omitted). |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
| source | string | – | Image URL, base64-encoded image (standard or URL-safe; optional padding; ASCII whitespace ignored), or base64 data: URI (data:<mime>;base64,<payload>). Base64 is uploaded as an image file, bypassing… |
No output schema declared.
No examples provided.
models_delete ~92
Soft-delete a model by owner/project/model, ul://owner/project/model, or slug with a project. Deleted models go to trash and remain restorable; weights, training history, and exports are removed only on permanent deletion.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
models_get ~95
Get details for one model by owner/project/model, ul://owner/project/model, or slug with a project. Model quality (best epoch and fitness) is not included; use model_metrics, which validates the platform's best-epoch fields.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
models_list ~97
List models in a project by slug, owner/slug, or project ul:// URI. Model quality is not included; use model_metrics, which validates the platform's best-epoch fields.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum models to return. Omit for the server default (currently 20); the API currently accepts up to 100. |
| project | string | yes | Project ref by slug, owner/slug, or ul:// URI. |
No output schema declared.
No examples provided.
projects_create ~105
Create a project in your Ultralytics workspace. Defaults to private visibility (the platform defaults to public when visibility is omitted).
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Project description. |
| name | string | yes | Display name. |
| owner | string | – | Workspace owner; defaults to the account owner. |
| project | string | yes | URL slug for the new project (distinct from the display name given by name). |
| visibility | string | – | Visibility "private" (default) or "public". |
No output schema declared.
No examples provided.
projects_delete ~59
Soft-delete a project by slug, owner/slug, or project ul:// URI. Deleted projects land in trash and remain restorable for a bounded window.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | Project ref by slug, owner/slug, or ul:// URI. |
No output schema declared.
No examples provided.
projects_get ~46
Get details for one project by slug, owner/slug, or project ul:// URI.
| Name | Type | Req | Description |
|---|---|---|---|
| project | string | yes | Project ref by slug, owner/slug, or ul:// URI. |
No output schema declared.
No examples provided.
projects_list ~86
List computer-vision projects in your Ultralytics workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum projects to return. Omit for the server default (currently 20); the API currently accepts up to 500. |
| owner | string | – | Workspace owner; defaults to the account owner. Takes precedence over username when both are given. |
| username | string | – | Compatibility alias for owner. |
No output schema declared.
No examples provided.
training_cancel ~105
Cancel a running training job by owner/project/model, ul://owner/project/model, or slug with a project. Cancelling releases the compute instance; elapsed GPU time is still charged and the most recently uploaded checkpoint is preserved rather than discarded. This stops the job and does not delete the model.
| Name | Type | Req | Description |
|---|---|---|---|
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
training_monitor ~358
Report a model's training status and progress (works for private and public projects). reportedCurrentEpoch, reportedProgressPercentage, and etaMs are the training job's own counters, passed through verbatim; after a run ends reportedCurrentEpoch can count a post-training evaluation as an epoch, so it may be one higher than the epochs actually trained, with reportedProgressPercentage inflated to match, and etaMs can stay nonzero. With no training job, progress is reported unavailable rather than inferred. resultRecordCount counts trainResults records, which are not epochs: a history can include a post-training evaluation record, duplicate or missing epoch numbers, and records out of epoch order. lastReportedMetrics is the last record in API order with its reported epoch, not necessarily the latest epoch. Model quality (best epoch, the model's reported metrics) belongs to model_metrics. timing.elapsedMs is wall-clock since model creation, evaluated at request time: it tracks elapsed run time while training is active, but for a finished model it reflects the model's age, not training duration. Billed training time is computeCost.durationMs.
| Name | Type | Req | Description |
|---|---|---|---|
| history_last_n | integer | – | Limit the history to the last N records in API order (default 20). Truncates a long run to its tail; the response always reports the window it covers (record counts and the min/max reported epoch), s… |
| include_history | boolean | – | Include the trainResults history (per-record epoch and metrics); omitted by default. |
| model | string | yes | Model ref by owner/project/model, ul:// URI, or slug (requires project). |
| project | string | – | Project ref required when model is given by slug. |
No output schema declared.
No examples provided.
training_start ~655
Start a cloud training job from an existing model or official YOLO base checkpoint (state-changing, may cost credits). Trains on exactly one dataset and requires epochs. The dataset is validated immediately, so an unusable dataset is rejected before any compute starts. In checkpoint mode a project model is created first, then the checkpoint's task is checked against the dataset's task server-side when training starts, by which point the model already exists — a mismatch there still leaves that model behind, unrequested, and the error names it so it can be reviewed and deleted (models_delete) if unwanted. Starting is billable immediately: the platform has no cost preview before that, so the projected cost and remaining balance are only reported after the job starts. Training an existing model that already has a recorded run (any status past pending/untrained) replaces that model's status, epoch count, and training result history the instant the new job starts, and that history cannot be recovered afterward; the previously uploaded weights survive. That path requires confirm_history_loss=true in addition to confirm_cost=true. Checkpoint mode never destroys an existing model's history since it always creates a new one, so it never needs confirm_history_loss — its own risk is the possible leftover model described above. An untrained or never-trained model needs no extra confirmation either. Use training_cancel to stop a job that is already running. Requires confirm_cost=true.
| Name | Type | Req | Description |
|---|---|---|---|
| batch | number | – | Images per batch: -1 targets about 60% GPU memory, a value between 0 and 1 sets a memory fraction, and a positive integer fixes the image count. |
| confirm_cost | boolean | – | Must be true to allow a credit-costing training run. Starting is billable immediately; the platform has no cost preview before that, so the estimated cost and remaining balance are only reported afte… |
| confirm_history_loss | boolean | – | Must be true to restart training on an existing model that already has a recorded run. Doing so replaces that model's status, epoch count, and training result history irrecoverably; the previously up… |
| dataset | string | yes | Dataset ref by slug, owner/slug, or a ul://owner/datasets/slug URI. |
| epochs | integer | yes | Maximum full passes over the training set. |
| gpu_type | string | yes | Cloud GPU type to allocate for training. |
| imgsz | number | – | Target input size: square batches normally, or the long-side size with rect=true. |
| model | string | yes | Existing model ref, or official YOLO base checkpoint such as yolo11n.pt or yolo11n-seg.pt. Checkpoint mode auto-creates a project model. |
| name | string | – | Run name for callbacks. |
| project | string | yes | Project ref that owns the training job and resolved model. |
| train_args | object | – | Additional YOLO training arguments passed through to the platform. epochs, imgsz, batch, and name here are silently overridden by the matching top-level input when both are set; data and model are re… |
No output schema declared.
No examples provided.
How do I install the Ultralytics Platform MCP server?
Ultralytics Platform MCP runs locally as an npm package, launched with npx -y ultralytics-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · ultralytics-mcp
claude mcp add amanharshx-ultralytics-mcp -- npx -y ultralytics-mcp
What is the Ultralytics Platform MCP server?
Ultralytics Platform MCP is listed in the public MCP registry as io.github.amanharshx/ultralytics-mcp. MCP server for Ultralytics Platform projects, datasets, training, prediction, exports, and models. This page covers its npm package (ultralytics-mcp).
Is the Ultralytics Platform MCP server safe to use?
Ultralytics Platform MCP scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 16 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 Ultralytics Platform MCP server expose?
Ultralytics Platform MCP exposes 44 tools: projects_list, projects_get, explore_projects, datasets_list, datasets_get, and 39 more. Their descriptions and schemas cost roughly 7,002 tokens of context every time the server is loaded.
Is the Ultralytics Platform MCP server still maintained?
Ultralytics Platform MCP is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Ultralytics Platform MCP server under?
Ultralytics Platform MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.