# Roboflow MCP MCP Server

> **Roboflow MCP MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to Roboflow MCP.
>
> MewCP takes care of all MCP infrastructure for you — credential storage, OAuth flows,
> token refresh, and production-grade auto-scaling — so your AI agents can connect to
> third-party services and run freely without you managing any MCP server yourself.
>
> Server page:  https://mewcp.com/mcp/roboflow-mcp
> MewCP docs:   https://docs.mewcp.com
> Full catalog: https://mewcp.com/llms.txt

---

## About

Build and deploy computer vision applications with Roboflow. Organize and annotate image datasets, generate training data, train custom object detection and segmentation models, run inference on images and video, and deploy vision workflows to cloud or edge devices.

---

## Details

- Server ID: `roboflow-mcp`
- Version: 4.0.11
- Tools: 292
- Authentication: OAuth, managed by MewCP
- Transport: http

---

## Access

The gateway URL below serves your **entire MewCP toolset**, not this server on its
own. Pasting a config snippet is not enough — Roboflow MCP has to be in the toolset
first. In order:

1. Add Roboflow MCP to your toolset at https://mewcp.com/mcp/roboflow-mcp
2. Connect your Roboflow MCP account (OAuth); MewCP stores the credential and attaches it to each call
3. Copy your MewCP API key from the dashboard (Developer)
4. Configure your client with the snippet for it below

Once connected, an agent does **not** see this server's tools as top-level tools.
It sees four meta-tools and reaches everything through them:

- `search(query)` — find tools by keyword across the toolset
- `get_schema(tools)` — full description and arguments for the tools you picked
- `list_accounts(provider)` — only when one app has several connected accounts
- `call_tool(server_maskedId, tool_name, args)` — execute

So the list below is what `search` can return for this server, not a set of
callable tool names on their own.

---

## Tools (292)

Descriptions are truncated to 160 characters; call `get_schema`
for the full text and the argument schema. Where a tool is annotated, its type
is shown — treat `destructive` as irreversible.

- `agent_chat` _(write)_ — Chat with the Roboflow AI agent. Use this tool for: - **Roboflow Q&A** — the agent has the full Roboflow documentation indexed (SDKs, REST API, deployment…
- `agent_chat_result` _(read)_ — Collect the result of an agent_chat run that was still working. Waits briefly for the run to finish, then returns either the completed chat response (same…
- `agent_conversations_list` _(read)_ — List Roboflow agent conversations in the workspace. Returns conversation metadata (id, name, source, timestamps, linked workflow ids). Use…
- `agent_conversation_get` _(read)_ — Get a single agent conversation with its message history. Returns the conversation metadata and the ordered list of the most recent ``message_limit`` messages…
- `agent_workflow_publish` _(destructive)_ — Publish the latest agent-edited draft of a workflow. The agent never publishes its edits to an existing workflow; it saves them as a draft. This tool promotes…
- `list_skills` _(read)_ — Discover Roboflow workflow guidance when native skills/list is unavailable. Use for Roboflow workflows and interactive apps. Returns descriptions and file…
- `read_skill` _(read)_ — Read server-hosted workflow or app instructions when MCP resources are unavailable. Load the relevant SKILL.md before following its workflow; retrieve…
- `projects_list` _(read)_ — List projects in the workspace associated with the credential. Returns ``{ projects, total, limit, offset }`` where ``projects`` holds up to ``limit`` entries…
- `projects_create` _(write)_ — Create a new computer vision project, including Action Recognition and Anomaly Detection. Action Recognition projects are video-only. Anomaly Detection…
- `projects_health` _(write)_ — Get dataset health check for a project. Running this for the first time or with regenerate=True might take up to a couple minutes. Returns class balance, image…
- `projects_get` _(read)_ — Get detailed info about a project including versions, classes, splits, and trained models. Returns full project details with workspace, project info, versions,…
- `projects_delete` _(destructive)_ — Delete a project, moving it to the workspace Trash. This is a soft delete: the project (including its versions, images, and models) stays in the Trash for 30…
- `projects_fork` _(write)_ — Enqueue an async fork of a public Universe project into your workspace. Provide either a Universe `url` or `source_project`. Returns the platform's 202 payload…
- `datasets_rebalance_splits` _(destructive)_ — Enqueue an async rebalance of a project's train/valid/test splits. Use this to fix a starved or empty split — an empty test split blocks training, and this is…
- `project_deployment_get` _(read)_ — Get the stable live endpoint state for a project, with `workspaceDetectionDefault` and `openAiDetectionAvailability`. Use the returned…
- `project_deployment_launch` _(destructive)_ — Create or prepare a stable Project Deployment. Configure this optional endpoint only when the requested task needs a stable serving endpoint or active…
- `project_deployment_set_model` _(destructive)_ — Change which model a Project's hosted endpoint serves without changing its stable inference path. Creates the endpoint if necessary. Configure this optional…
- `project_deployment_run` _(write)_ — Run inference through the project's stable live endpoint.
- `project_deployment_enable_active_learning` _(write)_ — Enable Active Learning for a Project Deployment.
- `project_deployment_disable_active_learning` _(write)_ — Pause Active Learning collection for a Project Deployment.
- `project_deployment_configure_active_learning` _(destructive)_ — Configure how a Project Deployment collects Active Learning data.
- `project_deployment_list_review_queues` _(read)_ — List Active Learning review queues fed by production inference.
- `image_upload` _(destructive)_ — Prepare a signed URL for uploading a zip of images, annotations or MP4/MOV videos. Use image_upload_files when the host supplies the selected files in its…
- `image_upload_files` _(destructive)_ — Upload images or MP4/MOV videos into a project through the host's file transfer bridge. Use this when the host supplies the selected files in the files input,…
- `image_upload_status` _(read)_ — Check the status of an image or video ZIP upload task. Use after the zip has been PUT to the signed URL (image_upload step 2), or after image_upload_files…
- `images_add_to_project` _(write)_ — Add existing workspace Asset Library images or videos to a project (async). Use for sources already in the workspace: media_upload_finalize results (`sourceId`…
- `video_upload` _(destructive)_ — Prepare a signed URL for uploading one local video (MP4 or MOV) into a project. Use this to put a video into a project, for example an Action Recognition…
- `video_upload_status` _(read)_ — Check ingestion of a raw video upload or a video staged from a ZIP. Use after the raw video PUT (video_upload step 1), or for each videoId returned by…
- `images_update_metadata` _(destructive)_ — Update metadata and tags on a single image. Metadata and tags can be useful to find images later in the platform. Common metadata include photo location,…
- `images_batch_update_metadata` _(destructive)_ — Batch-update metadata and tags on multiple images (async). Each item in updates must contain an 'imageId' and at least one mutation bucket. Same conflict rules…
- `images_workspace_search` _(read)_ — Search images across the entire workspace using RoboQL. The workspace is determined automatically from the API key — no workspace or project parameter is…
- `images_search` _(read)_ — Search images in one project by what they show, with optional filters. query is semantic search: results are ranked by how well they match the text, but the…
- `universe_dataset_images_search` _(read)_ — Search images inside a public Universe dataset given its URL. Accepts a full Universe dataset URL and derives the workspace and project slugs from it before…
- `media_analyze` _(read)_ — Analyze an image or short video with a vision model to understand its contents. Returns a structured analysis: a summary, the distinct objects present with…
- `media_upload` _(write)_ — Prepare a local image or video for analysis with media_analyze. Returns a short-lived signed upload URL plus step-by-step instructions; the upload itself…
- `media_trim` _(write)_ — Cut a clip from an Asset Library video and get an analyzable public url. Use after media_upload_finalize returns `needsTrim: true`. The simplest call is…
- `media_upload_finalize` _(destructive)_ — Validate a staged upload (from media_upload) and publish it. Checks the uploaded bytes match the declared media type and size limits. Images become workspace…
- `video_segments_annotate` _(destructive)_ — Annotate one Action Recognition video Source with a complete video-coco document. Upload the video with image_upload_files when the host supplies it in the…
- `annotations_save` _(destructive)_ — Save an annotation for an existing image. By default this only stores the annotation: it does not change whether the image belongs to the project Dataset. Pass…
- `autolabel_models_list` _(read)_ — List the foundation models available for hosted auto-labeling in this workspace. Returns ``{models: [...]}``. Each entry's ``id`` (e.g. ``gpt-6-astra-boxes``,…
- `autolabel_preview` _(write)_ — Preview one image with a foundation model to judge it before starting an auto-label job. Previews are for comparing candidate models on a few sample images.…
- `autolabel_start` _(write)_ — Start a hosted auto-label job over a batch of images. Call ``autolabel_models_list`` first to pick a foundation model; its entry ids (e.g. 'gpt-6-astra-boxes',…
- `autolabel_job_get` _(read)_ — Get per-subjob status and progress for an auto-label job. Returns status, model/project type, image counts, subjob progress, ontology, confidence thresholds,…
- `annotation_board_status` _(read)_ — Summarize a project's Annotate board: Unassigned, Annotating, Review, and Dataset. Proxies GET /:workspace/:project/annotation-board. Returns column counts and…
- `annotation_batches_list` _(read)_ — List upload batches in a project.
- `annotation_batches_get` _(read)_ — Get details about one upload batch.
- `annotation_batches_admin_list` _(read)_ — List annotation-board batches with cursor pagination.
- `annotation_batches_admin_get` _(read)_ — Get details about one annotation-board batch.
- `annotation_batches_admin_images_list` _(read)_ — List image IDs in a batch with cursor pagination.
- `annotation_batches_create` _(destructive)_ — Move selected images from one batch into a new batch.
- `annotation_batches_merge` _(destructive)_ — Move all images from source batches into a target batch and remove the emptied sources.
- `annotation_batches_delete` _(destructive)_ — Delete a batch. By default its images move to unassigned and remain accessible.
- `annotation_jobs_list` _(read)_ — List annotation jobs and return a continuation token when more exist.
- `annotation_jobs_get` _(read)_ — Get details about one annotation job.
- `annotation_jobs_images_list` _(read)_ — List image IDs assigned to a job with cursor pagination.
- `annotation_jobs_create` _(destructive)_ — Create a job and move images from a batch into it.
- `annotation_jobs_images_reassign` _(destructive)_ — Create a job from selected images, removing their prior assignment or Dataset membership.
- `annotation_jobs_images_add` _(destructive)_ — Move images into an existing job and reconcile assignment and Dataset counters.
- `annotation_jobs_update` _(destructive)_ — Update exactly one of a job's labeler, reviewer, or instructions.
- `annotation_jobs_submit_for_review` _(destructive)_ — Advance a labeling job into review.
- `annotation_jobs_return_for_edits` _(destructive)_ — Move a review job back to labeling, optionally with a new labeler.
- `annotation_jobs_review_image` _(destructive)_ — Set the explicit review status for one image in a job.
- `annotation_jobs_review_images` _(destructive)_ — Set a status for every job image matching the supplied current status.
- `annotation_jobs_accept_into_dataset` _(destructive)_ — Finalize selected job images into the Dataset and assign splits.
- `annotation_jobs_move_to_unassigned` _(destructive)_ — Remove a job while moving its images to an unassigned batch so they remain accessible.
- `annotation_jobs_delete_annotations` _(destructive)_ — Delete the project's annotation data for every image assigned to a job.
- `versions_generate` _(write)_ — Create a new dataset version with optional preprocessing and augmentation. Preprocessing and augmentation choices are user decisions: confirm the desired…
- `versions_get` _(read)_ — Get info about a dataset version including splits and its trainings. Returns version details with id, name, images, splits, preprocessing, augmentation, and a…
- `versions_delete` _(destructive)_ — Delete a dataset version, moving it to the workspace Trash. This is a soft delete: the version stays in the Trash for 30 days and can be restored with…
- `versions_export` _(write)_ — Check or trigger a dataset export for a version. Generation must finish first: use versions_get to check ``generating`` and poll roughly once a minute while it…
- `models_list` _(read)_ — List trained models associated with a project. Returns ``{models, total, returned, limit, offset, truncated}``. Each row carries `metrics`, and (for NAS…
- `models_get` _(read)_ — Get details for a trained model in the current workspace.
- `models_infer` _(read)_ — Run hosted inference on an image using a trained model. The model id is passed straight to the inference server, which resolves the model and its task from the…
- `trainings_describe_recipe` _(read)_ — Describe the tuning surface for a model type and get a ready-to-submit train recipe. Returns two things: - ``schema``: the valid tuning knobs for this model on…
- `trainings_create` _(write)_ — Create a training on a dataset version. IMPORTANT: A dataset version must exist before training. Use the versions_generate tool first to create one with the…
- `models_custom_weights_upload_guide` _(read)_ — Get the recipe for uploading locally trained model weights to Roboflow. This tool never uploads anything. Weights packaging must run on the machine that has…
- `trainings_list` _(read)_ — List the trainings on a dataset version. A version may own many trainings. Returns one entry per run: ``{ trainingId, status, createdAt, modelType, modelGroup,…
- `trainings_get` _(read)_ — Get a training's status, produced models, and metrics. With ``training_id``, returns that run: ``{ trainingId, status, createdAt, modelType, modelGroup,…
- `trainings_cancel` _(destructive)_ — Cancel an in-flight training run. Works for any architecture. For NAS runs the underlying handler accepts the ``mining`` status — same call cancels mining or…
- `trainings_stop` _(destructive)_ — Request an early stop on an in-flight training run. Distinct from cancel: the run finishes the current phase gracefully (mining or training) instead of…
- `trainings_delete` _(destructive)_ — Delete a training run, moving it to the workspace Trash. This is a soft delete: the training stays in the Trash for 30 days and can be restored with…
- `models_star_nas` _(write)_ — Star or unstar a NAS-trained model. NAS-only by design — the server rejects non-NAS modelTypes with a ``MODEL_NOT_NAS`` error. Starring triggers TRT…
- `model_evals_compare` _(read)_ — Compare models trained on or uploaded to one dataset version. Returns the project, version, selected frontier metric, available metrics, and one compact record…
- `model_evals_list` _(read)_ — List model evaluations in the current workspace. Returns ``{evals: [...]}`` where each entry has evalId, status, project (URL slug), versionId, modelId,…
- `model_evals_get` _(read)_ — Get the top-level summary for a single model evaluation. Returns the eval metadata plus a ``summary`` of mAP / precision / recall on done evals, and an…
- `model_evals_get_map_results` _(read)_ — Get per-split mAP results for an eval. Returns ``{splits: {train, valid, test}}`` where each split has overall ``map50`` / ``map50_95`` / ``map75``,…
- `model_evals_get_confidence_sweep` _(read)_ — Get the precision/recall/F1 confidence sweep for an eval. For each split returns ``perThreshold`` (metrics keyed by threshold like ``"0.20"``), the…
- `model_evals_get_performance_by_class` _(read)_ — Get per-class performance metrics for a single split. Returns ``{split, classes: [{className, map50, map50_95, map75, precision, recall, f1, optimalThreshold},…
- `model_evals_get_confusion_matrix` _(read)_ — Get the confusion matrix for an eval. Returns ``{split, confidenceThreshold, classes, matrix}`` where ``matrix[actual][predicted]`` is the count.
- `model_evals_get_vector_analysis` _(read)_ — Get UMAP + HDBSCAN clustering of image embeddings for an eval. Returns ``{clustering, preprocessing, clusters: [...]}`` — useful for finding pockets of…
- `model_evals_get_image_predictions` _(read)_ — Get per-image prediction stats for an eval (paginated). Returns ``{split, confidenceThreshold, totalImages, offset, limit, images: [...]}``. Each image carries…
- `model_evals_get_recommendations` _(read)_ — Get the LLM-generated recommendations for an eval, if available. Returns ``{generated: false}`` until the recommendations job has run. When ready, returns…
- `workflows_list` _(read)_ — List saved workflows in the current workspace. Returns up to ``limit`` workflows plus ``total``, the full workspace workflow count. Page with ``offset`` when…
- `workflows_get` _(read)_ — Get details for a saved workflow.
- `workflows_create` _(write)_ — Create and save a new Workflow in the workspace. Do not invent the config. Start from a similar workflow (workflows_list, then workflows_get) and copy its…
- `workflows_update` _(destructive)_ — Update an existing saved Workflow's name and definition. Validate the config with workflow_specs_validate before updating. Validation and execution support…
- `workflows_delete` _(destructive)_ — Delete a saved Workflow, moving it to the workspace Trash. This is a soft delete: the workflow stays in the Trash for 30 days and can be restored with…
- `workflow_blocks_list` _(read)_ — List all available Workflow blocks with a short summary of each. Returns a list of blocks, each with manifest (schema key), type (the identifier used in…
- `workflow_blocks_get_schema` _(read)_ — Get the full schema of a specific Workflow block. Returns all properties, required fields, and descriptions for a block identified by its manifest key (as…
- `workflow_specs_validate` _(read)_ — Validate a Workflow JSON definition without executing it. Check whether a workflow definition is syntactically and semantically correct before saving or…
- `workflows_run` _(destructive)_ — Execute a saved Workflow on one or more images. Runs a previously created Workflow against the provided images on the Roboflow serverless infrastructure. This…
- `workflow_specs_run` _(destructive)_ — Execute a Workflow from an inline JSON definition. Unlike ``workflows_run`` which runs a saved workflow by ID, this tool accepts a full workflow JSON spec and…
- `workflow_evals_capabilities` _(read)_ — Describe the Workflow Evals API: operations, schemas, evaluators, and caller actions. Start here in an unfamiliar workspace. Returns ``workspace`` (the…
- `workflow_evals_evaluators_list` _(read)_ — List the evaluators available to Spec Checks in the installed engine. Returns ``{engineVersion, items}``; each item has ``type``, ``semanticType``, and its…
- `workflow_evals_evaluators_get` _(read)_ — Get one evaluator's description and configuration JSON Schema.
- `workflow_evals_schema_get` _(read)_ — Get a JSON Schema for authoring Workflow Evals payloads. Read the ``spec`` schema before writing a Spec, ``eval-dataset`` before creating a Dataset, ``case``…
- `workflow_evals_openapi_get` _(read)_ — Get the machine-readable OpenAPI 3.1 contract for the Workflow Evals API. Large response. Prefer workflow_evals_capabilities and the per-tool descriptions; use…
- `workflow_evals_agent_manifest` _(read)_ — Get the engine's agent manifest. Start here before designing or drafting an Eval. Returns ``{engineVersion, manifest}``: ``entrySkill`` plus IDs of skills,…
- `workflow_evals_agent_resources_list` _(read)_ — List engine-owned agent skills or bundles. Returns ``{engineVersion, items}``.
- `workflow_evals_agent_resource_get` _(read)_ — Get one engine-owned agent resource. ``skill`` returns Markdown ``content``; ``bundle`` returns the parsed ``bundle`` whose ``assets`` IDs can be fetched with…
- `workflow_evals_operation_get` _(read)_ — Poll a Workflow Evals deletion operation. Returns a sanitized receipt ``{operationId, kind, state, resource}``, readable even after the deleted resource is…
- `workflow_evals_list` _(read)_ — List Evals in the workspace, newest first. Returns ``{items, nextCursor?}``. Items include setup ``state`` (``draft``/``ready``), ``runCount``, and…
- `workflow_evals_create` _(write)_ — Create an Eval. Every field is optional; an empty call creates a draft. The Eval becomes ``ready`` once it has an engine-valid Spec and a compatible Eval…
- `workflow_evals_get` _(read)_ — Get one Eval by ID or by its readable URL (exactly one). Returns setup ``state`` and diagnostics (including ``missing_bindings`` for unmapped authoring…
- `workflow_evals_update` _(destructive)_ — Update an Eval under optimistic concurrency. Omitted fields are preserved; ``clear_fields`` sets fields to null. The response re-derives ``draft``/``ready``.…
- `workflow_evals_delete` _(destructive)_ — Delete an Eval with all its Runs, Executions, results, and owned artifacts. Two steps. First call without ``deletion_key``: nothing is deleted; returns…
- `workflow_evals_specs_list` _(read)_ — List live Specs in the workspace. Returns ``{items, nextCursor?}``.
- `workflow_evals_specs_create` _(write)_ — Validate, compile, and save a Spec. Invalid Specs return 422 with engine diagnostics. Draft the Spec yourself following the engine skills (start at…
- `workflow_evals_specs_get` _(read)_ — Get the current live Spec and its ``revision``.
- `workflow_evals_specs_update` _(destructive)_ — Replace a live Spec's policy and/or metadata. The full result is recompiled. Existing Runs keep the Spec they froze.
- `workflow_evals_specs_validate` _(read)_ — Validate an unsaved Spec: compile diagnostics plus derived ground-truth requirements. Saves nothing.
- `workflow_evals_specs_compatible_datasets` _(read)_ — List Eval Datasets whose inputs and ground truth satisfy a Spec.
- `workflow_evals_datasets_list` _(read)_ — List Eval Datasets with declared contracts, Case counts, slices, and completeness.
- `workflow_evals_datasets_create` _(write)_ — Create an empty Eval Dataset with declared input and ground-truth contracts. Add Cases with workflow_evals_cases_create or workflow_evals_cases_import. Adding…
- `workflow_evals_datasets_get` _(read)_ — Get an Eval Dataset and its derived summary (no Cases inline) plus ``revision``.
- `workflow_evals_datasets_update` _(destructive)_ — Update Eval Dataset metadata (name/description).
- `workflow_evals_datasets_update_contract` _(destructive)_ — Replace a Dataset's declared input and/or ground-truth contract. A schema-only change returns the updated Dataset. A change that rewrites Cases returns 202…
- `workflow_evals_datasets_compatible_specs` _(read)_ — List Specs whose input and ground-truth requirements this Dataset satisfies.
- `workflow_evals_cases_list` _(read)_ — List Cases in an Eval Dataset (summaries, no media bytes).
- `workflow_evals_cases_create` _(write)_ — Add one Case to an Eval Dataset, validated against the Dataset's contracts. A Run that selects an incomplete Case is rejected with ``EVAL_NOT_READY`` and the…
- `workflow_evals_cases_get` _(read)_ — Get one complete Case with short-lived read URLs for its assets and its ``revision``.
- `workflow_evals_cases_replace` _(destructive)_ — Replace a Case atomically (full replacement, not a field patch). Read workflow_evals_cases_get first and preserve its name, groundTruthState, slices, and…
- `workflow_evals_cases_delete` _(destructive)_ — Remove a Case from the live Dataset. Runs that already froze it stay readable.
- `workflow_evals_cases_import` _(write)_ — Bulk-import images from Roboflow sources, project datasets, or uploaded artifacts. Returns 202 ``{intakeId, asyncTaskId, status, pollUrl}``; poll with…
- `workflow_evals_case_imports_get` _(read)_ — Poll a Case import. ``status`` is queued, running, completed, partially_completed, failed, or cancelled; ``progress`` has discovered, processed, adopted,…
- `workflow_evals_case_assets_upload` _(write)_ — Start uploading a local image as Case input. The MCP server never receives bytes. Returns ``{uploadId, artifactId, uploadUrl, requiredHeaders,…
- `workflow_evals_case_assets_upload_complete` _(write)_ — Verify and publish an uploaded Case image. Returns the stable ``artifactId``. Checks size, type, and that the bytes decode as an image. Call only after the PUT…
- `workflow_evals_bindings_suggest` _(read)_ — Propose a BindingSet mapping a Spec's inputs/outputs onto a Workflow Subject. Returns the proposal and the normalized ``workflowSubject``. Nothing is saved;…
- `workflow_evals_bindings_validate` _(read)_ — Validate a BindingSet against a Spec, Dataset, and Subject. Returns ``{valid, diagnostics, ...}`` with the planned capture contract. A valid BindingSet is what…
- `workflow_evals_case_preparations_start` _(destructive)_ — Run the Eval's Workflow over Dataset Cases to produce candidate outputs. Costs inference. Helps label ground truth and gives AI drafting real output shapes.…
- `workflow_evals_case_preparations_get` _(read)_ — Get a Case preparation's state and progress (current one when no ID is given). Returns ``{}`` when the Eval has no current preparation.
- `workflow_evals_case_preparations_resume` _(destructive)_ — Resume a preparation, keeping successful Cases and requeueing only failed ones.
- `workflow_evals_case_preparations_cases` _(read)_ — List candidate outputs per Case. Each success has a short-lived ``candidateOutput.readUrl``. Fetching ``readUrl`` returns the raw Workflow output keyed by…
- `workflow_evals_runs_list` _(read)_ — List an Eval's Runs, newest first. ``limit=1`` gives the latest Run.
- `workflow_evals_runs_start` _(destructive)_ — Start one grouped Run that evaluates every Subject on the Eval's Spec and Dataset. Each execution needs its own valid Subject and BindingSet, even when the…
- `workflow_evals_runs_get` _(read)_ — Get a Run's lifecycle state, child Execution counts, and ``retry`` eligibility. Poll this while the Run is active; refresh results once it is terminal. With…
- `workflow_evals_runs_configuration` _(read)_ — Get a Run's frozen shared configuration: Spec, Dataset snapshot, and Case selection.
- `workflow_evals_runs_cancel` _(destructive)_ — Request cancellation of a queued or running Run. Idempotent.
- `workflow_evals_runs_retry_failed` _(destructive)_ — Retry only missing or operationally failed Cases in the same Run. Check ``retry.allowed`` from workflow_evals_runs_get first. Keeps the frozen setup; to change…
- `workflow_evals_runs_replay` _(destructive)_ — Create a new derived Run from a source Run, optionally with new Subjects. Returns 409 if the saved Spec or Dataset changed since the source Run. Server…
- `workflow_evals_runs_rescore` _(write)_ — Score retained Workflow outputs against a revised Spec without re-running Workflows. Creates a new derived Run. Incompatible Executions return rerun-required…
- `workflow_evals_runs_delete` _(destructive)_ — Delete a Run with its Executions and results. Two steps. Without ``deletion_key`` nothing is deleted; returns ``{confirmationRequired: true, deletionKey,…
- `workflow_evals_executions_list` _(read)_ — List a Run's Executions (one per evaluated Workflow Subject).
- `workflow_evals_executions_get` _(read)_ — Get one Execution's lifecycle, frozen Subject identity, and result availability.
- `workflow_evals_executions_configuration` _(read)_ — Get an Execution's frozen Subject manifest, BindingSet, and linked plan.
- `workflow_evals_executions_input_cases` _(read)_ — Page through an Execution's input Cases for a client-owned (local) runner. Only needed when the Run uses a local runtime. Each item has the ``case``,…
- `workflow_evals_executions_submit_capture` _(write)_ — Submit one Case's Workflow output from a local runner. The platform scores it. Identical repeats are idempotent; different bytes for the same attempt return…
- `workflow_evals_results_overview` _(read)_ — Get an Execution's aggregate per-Check performance and runtime summary.
- `workflow_evals_results_cases_list` _(read)_ — List per-Case results for an Execution with compact ``checkResults`` by Check ID. Use ``failed_check=True`` to find failures, then…
- `workflow_evals_results_case_get` _(read)_ — Get one Case's result: inputs, frozen ground truth, bound actual values, and Check results. The raw Workflow output is omitted by default (``rawOutputOmitted:…
- `workflow_evals_results_compare` _(read)_ — Compare completed Executions: per-Check deltas and a page of Case-level deltas. Pure read; sibling Executions from one Run are always comparable.
- `workflow_evals_exports_start` _(write)_ — Start a server-side export of a Run's results. Returns 202 with ``asyncTaskId``; poll workflow_evals_exports_get_job until it completes, then use its download…
- `workflow_evals_exports_get_job` _(read)_ — Poll an export. ``{asyncTaskId, state, progress, result?}``; ``result`` has the artifact and download URL.
- `workflow_evals_exports_download_url` _(read)_ — Get a fresh short-lived download URL for a completed export.
- `workflow_evals_embeddings_start` _(write)_ — Generate (or reuse) a 2D embedding projection of an Execution's input images. New Runs schedule this automatically; use it for older Runs or explicit retries.…
- `workflow_evals_embeddings_get` _(read)_ — Get embedding analysis jobs. Never launches analysis. With ``provider`` or ``async_task_id``, returns ``{job}`` (``job`` is null when none exists). With…
- `workflow_evals_embeddings_cancel` _(destructive)_ — Request cooperative cancellation of an embedding job.
- `batch_processing_asset_library_job_create` _(destructive)_ — Queue a durable Workflow run over an Asset Library selection. The platform owns selection authorization, entitlement and billing, workflow compatibility,…
- `batch_processing_asset_library_task_get` _(read)_ — Poll the launch receipt until its durable job is registered.
- `batch_processing_guide` _(read)_ — Route a bulk image/video processing request onto batch processing: pick the staging mode, settle the batch id, and return the exact inference-cli commands for…
- `batch_processing_staging_batches_list` _(read)_ — List the workspace's data-staging batches (inputs and job results). Returns ``{batches, nextPageToken?}``. Batches expire about 7 days after creation. Job…
- `batch_processing_staging_batch_get` _(read)_ — Get a staged batch's metadata, file count, and ingest progress. Sharded, cloud-storage, and references ingests register files asynchronously: the count stays…
- `batch_processing_staging_batch_files_list` _(read)_ — List a staged batch's files with time-limited signed download URLs. Use this to download the results of a finished job (the ``<job-id>-export`` batch).…
- `batch_processing_jobs_list` _(read)_ — List the workspace's batch processing jobs. Returns ``{jobs, nextPageToken?}`` with each job's full definition omitted (use ``batch_processing_job_get`` for…
- `batch_processing_job_get` _(read)_ — Get a job's status and per-stage progress. Poll this to track a running job: ``job.isTerminal`` says whether it finished and ``job.error`` whether it failed;…
- `batch_processing_staged_job_start` _(destructive)_ — Start a batch processing job: run a Workflow over a staged batch. This launches asynchronous compute and consumes credits. The batch must be staged first (see…
- `batch_processing_job_abort` _(destructive)_ — Abort a running batch processing job. Already-produced partial results stay available in the job's staging batches.
- `batch_processing_job_restart` _(destructive)_ — Restart a failed or aborted job, optionally overriding compute parameters. Consumes credits like a fresh run.
- `batch_processing_job_logs` _(read)_ — Fetch a job's processing logs (paginated). Use this to diagnose failed or slow jobs; pair with batch_processing_job_get for stage status.
- `batch_processing_run` _(destructive)_ — Master tool: drive a batch processing run over a staging batch you name (stage -> ingest -> job -> results) through repeated resumable calls. For Asset Library…
- `devices_list` _(read)_ — List devices registered in the workspace. Returns a list of Device objects with id, name, status, last_heartbeat, platform/hardware info, tags, and created_at.…
- `devices_create` _(write)_ — Provision a new v2 device. Requires the ``device:update`` scope. Returns ``{deviceId, installId, offlineProvisioningQrPayload?}``: ``installId`` is the…
- `devices_get` _(read)_ — Get a single device by id. Returns the Device object. 404 if the device does not exist or belongs to a different workspace. When inspecting a device, also call…
- `devices_get_config` _(read)_ — Get the device's current runtime configuration. Returns the full RFDM config JSON: ``device_id``, ``device_name``, ``workspace_id``, ``version``,…
- `devices_get_default_config` _(read)_ — Get the workspace's default device configuration. Returns ``{config, patch}``: ``config`` is the base default config with the workspace's ``config_patch``…
- `devices_update_config` _(destructive)_ — Update the device's runtime configuration. Requires ``device:update``. Uses JSON Merge Patch, so a small nested change preserves sibling settings; null…
- `devices_set_service_version` _(destructive)_ — Pin one service's version without replacing the rest of the config. Requires the ``device:update`` scope. Respects the maintenance window and queued changes.…
- `devices_get_config_history` _(read)_ — List prior configuration revisions, newest first. Returns ``{data: ConfigRevision[], pagination: {next_cursor, has_more, limit}}``. Each ConfigRevision carries…
- `devices_restart_inference` _(destructive)_ — Request a restart of the device's inference runtime. Interrupts running pipelines. This restarts inference, not the host operating system. Returns ``{id}`` for…
- `devices_discover_cameras` _(write)_ — Request camera discovery on a device through its command channel. Returns ``{id}`` for the queued command. Discovery runs asynchronously; read ``devices_get``…
- `devices_streams_pause` _(destructive)_ — Request a pause of a running device stream without removing its config. ``pipeline_id`` targets the edge pipeline. Pass ``stream_id`` from the same Stream…
- `devices_streams_resume` _(destructive)_ — Request that a paused device stream resume processing. ``pipeline_id`` targets the edge pipeline. Pass ``stream_id`` from the same Stream object when it is a…
- `devices_streams_trigger` _(destructive)_ — Request one Workflow execution on a trigger-driven device stream. The platform resolves the Workflow and workspace from the stream or device config. Camera…
- `devices_restart_poe_port` _(destructive)_ — Request a power cycle of one camera's PoE port on supported edge hardware. Interrupts the camera and its stream while power is cycled. Choose the interface…
- `devices_streams_create` _(destructive)_ — Create a stream on a device through the ``add_stream`` command. Requires the ``device:update`` scope. On V2 devices the platform applies this as an immediate…
- `devices_streams_terminate` _(destructive)_ — Remove a stream from a device permanently. Requires the ``device:update`` scope. On V2 devices the stream is removed from the device config at once (``status:…
- `devices_get_secure_gateway_status` _(read)_ — Read the secure gateway's recorded bootstrap and cache state. Returns the platform's gateway state, including ``status`` (``initialising``, ``ready``, or…
- `devices_streams_list` _(read)_ — List streams configured on the device. Returns a list of Stream objects, including streams that exist only in the device config and have not been reported by…
- `devices_streams_get` _(read)_ — Get a single stream by id. Returns the Stream object. Streams that exist only in the device config are returned as synthesized ``provisioning`` entries rather…
- `devices_get_logs` _(read)_ — Fetch device logs from Elasticsearch. Rate-limited at 120 requests / minute per workspace, in a separate bucket from device log ingestion. Returns ``{data:…
- `devices_get_telemetry` _(read)_ — Get aggregated hardware metrics and device health sections. Rate-limited per-device: 60 requests / minute steady, plus a burst limit of 10 requests / 10…
- `devices_get_deployments` _(read)_ — Get the device's deployment history with per-deployment activity. This is the device Activity tab as structured JSON: each config revision becomes a half-open…
- `devices_get_exception_occurrences` _(read)_ — List raw occurrences of one exception fingerprint, newest first. Use after ``devices_get_deployments`` to see exactly when a grouped exception fired — each row…
- `devices_get_snapshot` _(read)_ — Get the full current state of a device in one call. Prefer this as the FIRST call when diagnosing a device — it aggregates what would otherwise take six…
- `devices_get_events` _(read)_ — List device and stream lifecycle events. Returns ``{data: Event[], pagination: {next_cursor, prev_cursor, has_more, limit}}``. By default the feed models…
- `devices_get_services` _(read)_ — List the sidecar containers a device runs and what each is doing. Joins the device's declared ``services`` config with the same latest-value status cache the…
- `devices_get_plc_status` _(read)_ — Answer "is this PLC connected?" for a device's PLC relay sidecars. Thin view over ``devices_get_services(kind='plc_relay')``. Returns ``{device_id, services:…
- `devices_get_event_store_stats` _(read)_ — Report a device's local event store against its capacity limits. Thin view over ``devices_get_services(kind='event_store')``. Returns ``{device_id, services:…
- `devices_get_service_series` _(read)_ — Chart one named sidecar metric over time. The metric name resolves to the right entity id, event names, and metadata key for that service's kind, and the read…
- `devices_update` _(destructive)_ — Rename a device, edit its environment variables, or set its workflow, live sampling or production mode. Requires the ``device:update`` scope. For runtime…
- `devices_delete` _(destructive)_ — Delete a device and revoke its api_keys. Cannot be undone. Requires the ``device:update`` scope on a workspace credential; a device's own api_key cannot delete…
- `devices_send_command` _(destructive)_ — Queue a command on the device's command channel. Requires the ``device:update`` scope. Returns ``{id}``; the device picks the command up on its next poll.…
- `devices_redeploy` _(write)_ — Mint a fresh install id to reinstall an existing device. Requires the ``device:update`` scope on a workspace credential. Returns ``{deviceId, installId,…
- `devices_provisioning_qr` _(write)_ — Mint the offline (Lite) provisioning QR payload for a device. Requires the ``device:update`` scope on a workspace credential and the workspace's…
- `devices_os_image_create` _(write)_ — Start building a ready-to-flash OS Lite image for a device. Requires the ``device:update`` scope on a workspace credential and the OS Lite image builder…
- `devices_os_image_get` _(read)_ — Get the device's in-flight or last finished OS Lite image job. Requires the ``device:update`` scope: the finished image embeds the device's credentials.…
- `devices_apply_pending_config` _(write)_ — Apply config updates staged for the device's next maintenance window now. Requires the ``device:update`` scope. A no-op when nothing is staged.
- `devices_update_default_config` _(destructive)_ — Replace the workspace default device config patch. Requires the ``device:update`` scope. The merged result is validated against the RFDM config schema (400…
- `devices_streams_update` _(write)_ — Merge fields into a stream's ``data`` map. Requires the ``device:update`` scope. To change what the stream runs, edit ``stream`` in the device config with…
- `devices_streams_delete` _(destructive)_ — Remove a stream's state document. Requires the ``device:update`` scope. Remove the stream from the device config too (``devices_update_config``), or the device…
- `devices_streams_capture_frame` _(write)_ — Add the stream's latest frame to a project. Requires ``device:read`` plus ``image:create`` on a credential not limited to project groups. 403 when the…
- `devices_streams_sample_frame` _(write)_ — Look at what a device camera sees right now. Returns the frame as an image plus ``image_url``: a signed URL, valid for an hour, that Workflow and model tools…
- `devices_snooze_alerts` _(write)_ — Snooze the device's health alerts for one day. Requires the ``device:update`` scope. Returns ``{deviceId, alerts_snoozed_until}``.
- `devices_list_events` _(read)_ — List lifecycle events across every device in the workspace. Requires the ``device:read`` scope. For one device's events with dedupe control use…
- `devices_get_inference_versions` _(read)_ — Get the inference server version each listed device runs. Requires the ``device:read`` scope. Use it to check whether a workflow's blocks are supported before…
- `devices_get_stream_options` _(read)_ — List every device's stream ids and inferred camera family. Requires the ``device:read`` scope. Stream URLs are never returned.
- `device_groups_list` _(read)_ — List the workspace's fleet device groups. Requires ``device:read``.
- `device_groups_get` _(read)_ — Get one fleet device group. Requires ``device:read``.
- `device_groups_create` _(write)_ — Create a fleet device group with at least one member. Requires ``device:update``.
- `device_groups_update` _(destructive)_ — Update a fleet device group. Requires ``device:update``. ``device_ids`` replaces the whole membership. To add or remove single devices use…
- `device_groups_add_devices` _(write)_ — Add devices to a fleet device group; other members are kept. Requires ``device:update``.
- `device_groups_remove_devices` _(destructive)_ — Remove devices from a fleet device group; the devices are kept. Requires ``device:update``.
- `device_groups_delete` _(destructive)_ — Delete a fleet device group; its devices are kept. Requires ``device:update``.
- `device_groups_get_config` _(read)_ — Get a fleet device group's config patch. Requires ``device:read``.
- `device_groups_update_config` _(destructive)_ — Replace a fleet device group's config patch. Requires ``device:update``.
- `api_keys_list` _(read)_ — List all API keys for the workspace. Secret key values are never returned — keys are represented by their non-secret ``keyId`` handle and a masked ``prefix``.…
- `api_keys_get` _(read)_ — Get metadata for a single API key by its keyId. Secret values are never returned. The key is identified by its non-secret ``keyId`` handle (not the secret key…
- `api_keys_owner_candidates` _(read)_ — List the workspace members who may be named as a key's ``owners``. Owners receive the rotation reminder email, so they must be able to roll the key: for a…
- `api_keys_get_publishable` _(read)_ — Get the workspace's publishable key (``rf_<workspaceId>``). The publishable key is the non-secret workspace identifier used with Roboflow.js and browser-side…
- `api_keys_create` _(write)_ — Create a new API key for the workspace. Who can create keys: a credential may create keys only if it is unscoped (full access) or holds the ``api-key:create``…
- `api_keys_update` _(destructive)_ — Update the name, scopes, custom_metadata or rotation schedule of an API key. Only fields you provide are sent; omitted fields are left unchanged. Omitting…
- `api_keys_protect` _(write)_ — Mark an API key as protected so it cannot be revoked or disabled. Protection is one-way from the API: a protected key can only be unprotected in the Roboflow…
- `api_keys_disable` _(destructive)_ — Disable (or re-enable) an API key without revoking it. A disabled key is inactive and will be rejected by the platform until re-enabled. Protected keys cannot…
- `api_keys_revoke` _(destructive)_ — Permanently revoke (delete) an API key. Revocation is irreversible — the key can never be recovered or re-enabled. Protected keys cannot be revoked; an admin…
- `api_keys_roll` _(destructive)_ — Roll (rotate) an API key: revoke it and mint a replacement in one step. This is the rotation path for a leaked or compromised key. The replacement keeps the…
- `folders_list` _(read)_ — List the workspace folders visible to this credential. Returns ``{ folders: [{id, name, parent_id, child_ids, projects, external_id}, ...] }``. ``projects``…
- `workspace_announcements_list` _(read)_ — List the workspace's scheduled, live and past announcements, newest start first. Returns ``{ announcements: [{id, message, starts_at, ends_at, timezone,…
- `workspace_announcements_create` _(write)_ — Schedule a banner announcement that every member of the workspace sees. Confirm the text and window with the user before calling: the banner reaches everyone…
- `workspace_announcements_update` _(destructive)_ — Change an announcement's text, window or display timezone. Only the fields you pass change; pass at least one. The previous text is replaced and cannot be…
- `workspace_announcements_delete` _(destructive)_ — Delete an announcement. A live banner disappears for everyone right away. The announcement drops out of workspace_announcements_list and cannot be restored…
- `vision_events_query` _(read)_ — Query production vision events for a use case, with filters and pagination. This is the primary tool for answering questions like "what safety alerts fired in…
- `vision_events_use_cases_list` _(read)_ — List the vision-event use cases in the workspace. Use cases are the logical buckets events are grouped under; every query is scoped to one. Call this first to…
- `vision_events_custom_metadata_schema_get` _(read)_ — Get the custom-metadata schema discovered for a use case. Custom metadata is arbitrary key/value data attached to events at ingestion time. This returns the…
- `vision_events_image_metadata_schema_get` _(read)_ — Get the per-image metadata schema discovered for a use case. Per-image metadata is key/value data attached to an individual image inside an event (for example…
- `vision_events_use_case_create` _(write)_ — Create a new vision-event use case. Use cases are the buckets that incoming events are grouped under. Returns ``{id, name}``; use the returned ``id`` as…
- `vision_events_use_case_rename` _(write)_ — Rename an existing vision-event use case. Only the display name changes; the ``id`` and all associated events are preserved. Returns ``{id, name}``.
- `vision_events_use_case_archive` _(destructive)_ — Archive a vision-event use case. Sets the use case to ``inactive``: it is hidden from the default ``active`` listing and incoming events for it are rejected at…
- `vision_events_use_case_unarchive` _(write)_ — Restore a previously archived vision-event use case. The reverse of ``vision_events_use_case_archive``; the use case returns to the default ``active`` listing.…
- `vision_events_saved_filters_list` _(read)_ — List the filters saved for a use case. Saved filters are named Search-tab filter sets, shared with the whole workspace. Run one with ``vision_events_query``…
- `vision_events_saved_filter_get` _(read)_ — Get one saved filter. Returns ``{savedFilter}``.
- `vision_events_saved_filter_create` _(write)_ — Save a named filter for a use case, shared with the whole workspace. Everyone in the workspace sees it in the use case's Search tab. Needs the Create Vision…
- `vision_events_saved_filter_update` _(destructive)_ — Rename a saved filter, save over its filters, or both. Saving over replaces the filter's chips for everyone in the workspace and needs ``vision-events:write``…
- `vision_events_saved_filter_delete` _(destructive)_ — Delete a saved filter for everyone in the workspace. Allowed for the person who saved it, or with ``vision-events:manage`` and the Manage Vision Events…
- `universe_search` _(read)_ — Search Roboflow Universe for datasets or models. With result_type 'model', each result lists its runnable modelVersions, each with the exact model_id to deploy…
- `datasources_list` _(read)_ — List datasource (cloud-bucket mirror) configurations in the workspace. Returns ``{ datasources }`` where each entry is trimmed to ``{id, name, credentialId,…
- `datasource_get` _(read)_ — Get full detail for a single datasource, including its bucket, mirror rules, and latest job summary.
- `datasource_validate` _(read)_ — Check that Roboflow can access the datasource's bucket. Returns ``{checks, errors}`` where ``checks`` reports whether ``listFiles``/``headFile``/``getFile``…
- `datasource_job_get` _(read)_ — Get the status and statistics of a single datasource mirror run. Poll this with a ``batchId`` from ``datasource_trigger`` to track a run. Returns the job's…
- `datasource_create` _(destructive)_ — Create a datasource that mirrors a cloud bucket into your workspace. Returns the created datasource {id}. Nothing is mirrored until you call datasource_trigger…
- `datasource_update` _(destructive)_ — Update a datasource. Only the fields you pass are changed. To replace the bucket, pass ``bucket_type``, ``bucket_name`` and ``region`` together (``endpoint``…
- `datasource_delete` _(destructive)_ — Delete a datasource configuration. Does not delete already-mirrored images.
- `datasource_trigger` _(destructive)_ — Start a mirror run for a datasource. This kicks off a job that ingests bucket contents into your workspace. Depending on the saved mirror rules, it can…
- `connect_cloud_storage` _(destructive)_ — Connect a cloud bucket end to end in one call: reuse or create a credential, create the datasource, validate it, and start the first mirror run. A run can…
- `credentials_list` _(read)_ — List cloud-storage credentials in the workspace. Secrets are masked server-side, so only non-sensitive fields (id, type, name, description) come back. Returns…
- `credentials_delete` _(destructive)_ — Delete a credential. Datasources still referencing it will fail to run.
- `get_aws_storage_credential_setup_link` _(write)_ — Get a Roboflow app link to set up an AWS S3 storage credential. This tool does not create a credential. It returns ``manual_entry_required`` with a ``url`` for…
- `trash_list` _(read)_ — List soft-deleted items currently in the workspace Trash. Deleted projects, versions, workflows, and trainings stay in the Trash for 30 days before permanent…
- `trash_restore_project` _(write)_ — Restore a soft-deleted project from the workspace Trash. Undoes ``projects_delete`` while the project is still within its 30-day retention window.
- `trash_restore_version` _(write)_ — Restore a soft-deleted dataset version from the workspace Trash. Undoes ``versions_delete`` while the version is still within its 30-day retention window.…
- `trash_restore_workflow` _(write)_ — Restore a soft-deleted workflow from the workspace Trash. Undoes ``workflows_delete`` while the workflow is still within its 30-day retention window.
- `trash_restore_training` _(write)_ — Restore a soft-deleted training run from the workspace Trash. Undoes ``trainings_delete`` while the training is still within its 30-day retention window.
- `async_tasks_get` _(read)_ — Poll an async task by id. Poll every 5 seconds; processing may take up to 30 seconds to start. Returns `{ taskId, status, progress, result?, error? }`.…
- `meta_feedback_send` _(write)_ — Send product feedback about Roboflow to the Roboflow team. Records a bug report, missing-feature request, UX friction note, or documentation issue against the…
- `annotation_editor_open` _(read)_ — Open the Roboflow annotation editor for one image. Use this when a person needs to inspect or edit image annotations visually. Changes are saved only when the…
- `annotation_editor_read` _(read)_ — Reload the editor snapshot and revision after a save or conflict.
- `annotation_editor_save` _(destructive)_ — Save the user's annotation edits using the loaded group revision. A conflict requires reloading and reconciling edits. Never blindly retry.
- `project_deployment_preview` _(write)_ — Show the project's live endpoint on one workspace image or video, in an interactive player. Use this when the user wants to see what the project's model finds…
- `workflows_preview` _(destructive)_ — Show a saved Workflow's results on one workspace image or video, in an interactive player. Use this when the user wants to see a Workflow's output images,…
- `preview_rerun` _(destructive)_ — Run a preview again from its rerunArguments, with the classes the user changed.
- `preview_job_get` _(read)_ — Read a preview job with its segments and results; every call signs its urls again.
- `preview_job_cancel` _(destructive)_ — Stop a preview job. It cannot resume; a new run starts a new job.
- `preview_media_refresh` _(read)_ — A fresh signed url for the preview's source video, when the widget reopens after it expired.

---

## Connect

Gateway URL: https://gateway.mewcp.com/personal/mcp

Every request carries one header:

    Authorization: Bearer <API_KEY>

Replace `API_KEY` with your own key from the dashboard (Developer).

## Apps

### Claude Desktop

Mac & Windows app

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://gateway.mewcp.com/personal/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open Claude Desktop → Settings → Developer → "Edit Config"
2. Paste the snippet inside the outer { } of the config file (merge with your existing "mcpServers" section if you have one)
3. Save the file, then quit Claude Desktop completely and reopen it
4. Start a new conversation — your tool will be available

### VS Code

Copilot / Cline

- Command Palette → "MCP: Open User Configuration" (opens mcp.json). For one project only, use .vscode/mcp.json instead.

```json
{
  "mcp.servers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have a "servers" section in your mcp.json? Just add the server entry inside it.

1. Open VS Code → Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
2. Run "MCP: Open User Configuration" to open your mcp.json
3. Paste the snippet and save
4. Start the server when prompted (or from the MCP servers view) and use it in Copilot Chat

### Cursor

AI-first editor

- macOS: `~/.cursor/mcp.json`
- Windows: `%USERPROFILE%\.cursor\mcp.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your mcp.json? Just add the server entry inside it.

1. Open Cursor → Settings → Cursor Settings → MCP
2. Click "Add new global MCP server"
3. Paste the snippet and save
4. Restart Cursor

### Codex

OpenAI's CLI agent

- Add the snippet to your Codex MCP config or your standard MCP config file for the CLI tool you use.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Codex generally reads a standard MCP server block, so you can add this alongside your other configured servers.

1. Open your Codex MCP config or project-level config file
2. Paste the MewCP server block inside the config JSON/TOML structure your tool expects
3. Save the file and restart Codex
4. Verify the tool is available inside a fresh session

### Claude Code

Anthropic's CLI agent

- ~/.claude.json (user scope) or .mcp.json in your project root — create it if it doesn't exist. Or skip the file and use the CLI command below.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open ~/.claude.json (or .mcp.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file and start (or restart) Claude Code
4. Or skip the file entirely and run the CLI command below instead

### OpenCode

Open-source terminal agent

- ~/.config/opencode/opencode.json (global) or opencode.json in your project root — create it if it doesn't exist.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mewcp": {
      "type": "remote",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcp" section in your opencode.json? Just add the server entry inside it.

1. Open ~/.config/opencode/opencode.json (or opencode.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and start (or restart) OpenCode

### OpenClaw

Self-hosted agent gateway

- ~/.openclaw/openclaw.json — create it if it doesn't exist.

```json
{
  "mcp": {
    "servers": {
      "mewcp": {
        "transport": "streamable-http",
        "url": "https://gateway.mewcp.com/personal/mcp",
        "enabled": true,
        "headers": {
          "Authorization": "Bearer API_KEY"
        }
      }
    }
  }
}
```

Already have an "mcp" section in your openclaw.json? Just add the server entry inside "servers".

1. Open ~/.openclaw/openclaw.json in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and restart OpenClaw

### Antigravity

Google's agentic IDE

- ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace-local) — create it if it doesn't exist.

```json
{
  "mcpServers": {
    "mewcp": {
      "serverUrl": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it. Remote servers must use the "serverUrl" field — the legacy "url"/"httpUrl" fields aren't supported.

1. In the editor's agent side panel, click "…" → "MCP Servers" → "Manage MCP Servers" → "View raw config" (Antigravity CLI: type /mcp instead to open the Interactive MCP Manager)
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file — the server connects automatically

### Hermes

Nous Research's CLI agent

- config.yaml in your Hermes config directory (~/.hermes) — add this under a top-level "mcp_servers:" key.

```yaml
mcp_servers:
  mewcp:
    url: "https://gateway.mewcp.com/personal/mcp"
    headers:
      Authorization: "Bearer API_KEY"
```

Already have an "mcp_servers" section in your config.yaml? Just add the server entry inside it.

1. Open config.yaml in your Hermes config directory
2. Paste the snippet under the top-level "mcp_servers:" key (merge with existing entries if you have any)
3. Save the file, then run /reload-mcp in Hermes (or start a fresh session)
4. Ask Hermes "Tell me which MCP-backed tools are available right now" to confirm it connected

### DeepSeek Harness

DeepSeek's agent harness

- cordis.yml in your DSH project — or the patch file you mount plugins from.

```yaml
- id: mcp-mewcp
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: mewcp
    transport: streamable-http
    url: https://gateway.mewcp.com/personal/mcp
    headers:
      Authorization: "Bearer API_KEY"
```

One plugin instance = one MCP server. Add this entry to your plugin list; don't nest it inside another entry.

1. Open cordis.yml (or your patch file) in your DSH project
2. Paste the entry into your plugin list, keeping the leading dash and indentation
3. Restart DSH (or let HMR reload) — tools register as mcp__mewcp__<tool_name>
4. Verify with: dsh web --dump-config | grep -A3 mcp

## SDKs

### Python

fastmcp client

```python
import asyncio
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

SERVER_URL = "https://gateway.mewcp.com/personal/mcp"
API_KEY = "API_KEY"

transport = StreamableHttpTransport(
    url=SERVER_URL,
    headers={
        "Authorization": f"Bearer {API_KEY}",
    }
)

async def main():
    client = Client(transport)
    async with client:
        tools = await client.list_tools()
        print(tools)

asyncio.run(main())
```

1. Install fastmcp: pip install fastmcp
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run your script

### TypeScript

MCP SDK

```typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const SERVER_URL = "https://gateway.mewcp.com/personal/mcp";
const API_KEY = "API_KEY";

const transport = new StreamableHTTPClientTransport(new URL(SERVER_URL), {
  requestInit: {
    headers: {
      Authorization: `Bearer ${API_KEY}`,
    },
  },
});

const client = new Client({ name: "mewcp-client", version: "1.0.0" });
await client.connect(transport);

const tools = await client.listTools();
console.log(tools.tools.map((t) => t.name));
```

1. Install: npm install @modelcontextprotocol/sdk
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run with Node 18+ as an ES module (e.g. npx tsx script.ts)