Skip to main content

MCP tool reference

This page is generated from the miForge MCP server's live tool registry every time the manual is built, so it always matches the server in the same release. For how to connect an agent and how approvals work, read the MCP server guide and Approvals.

Every tool the miForge MCP server registers, its category, the backend route it calls and, when an agent calls it, the approval it waits for. Derived from the live registry by backend/src/mcp_server/contract.py.

Agents: call forge_howto first; it carries the workflow and the result shapes.

90 tools in 10 categories; 10 wait for the operator.

core (18)​

ToolCallsWaits forWhat it does
forge_healthGET /api/healthmiForge's health: PostgreSQL, Redis and each optional integration (miLLM, miDataworks, the activation source), each by name with a reason when down.
forge_howtonone (served by the MCP server)Guidance for agents: the workflow, the three result shapes (resource, pending approval, unavailable), the four approval actions, GPUs and settings.
forge_host_resourcesGET /api/v1/host/resourcesThe host's CPU, memory and each GPU's utilisation and memory, keyed by GPU UUID.
forge_list_gpusGET /api/v1/gpusThe visible GPUs by UUID (never by index), with name and free memory.
forge_list_model_sourcesGET /api/v1/models/sourcesEvery acquisition mode (load, create, attach) and whether each can run here, with the reason when not, plus the model roots a load is confined to.
forge_list_local_modelsGET /api/v1/models/localModel directories under the model roots: path, architecture, weights, tokenizer.
forge_list_local_tokenizersGET /api/v1/tokenizers/localDirectories under the model roots with tokenizer files at their root (a tokenizer, model or checkpoint directory).
forge_check_hub_revisionGET /api/v1/hub/revisionResolve a Hugging Face repository's revision to its commit, and say whether that commit has a tokenizer, a config and weights at its root.
forge_list_providersGET /api/v1/providersThe inference providers (in-process, or any OpenAI-compatible endpoint) and each one's availability.
forge_check_providerPOST /api/v1/providers/{name}/checkSend one prompt to a provider and return its answer.
forge_list_run_typesGET /api/v1/run-typesThe three run types (change, create, adapter) from the live registry.
forge_list_stop_conditionsGET /api/v1/stop-conditionsThe five stop conditions, their required parameters and their precedence.
forge_list_refresh_modesGET /api/v1/refresh-modesThe refresh modes for a self-generation run's prompt set.
forge_list_selectorsGET /api/v1/selectorsThe selector and grader plugins (rule, judge model, reference match, human review, composite) from the live registry.
forge_evaluate_completionsPOST /api/v1/selectors/evaluateRun a selector configuration over completions and return each verdict.
forge_list_approvalsGET /api/v1/approvalsApproval requests: action, who asked, the summary the operator decides on, status, expiry, and the outcome once decided.
forge_list_approval_actionsGET /api/v1/approvals/actionsThe four approval actions and what each means.
forge_get_approval_statusGET /api/v1/approvals/{approval_id}One approval: pending, executing, executed (result holds the route's answer), failed (error holds its refusal), rejected (with reason) or expired.

runs (20)​

ToolCallsWaits forWhat it does
forge_list_runsGET /api/v1/runsEvery run, newest first, a page at a time, with the filter vocabularies.
forge_get_runGET /api/v1/runs/{run_id}One run's record: status, last step, liveness (heartbeat age against the janitor's threshold), stop reason, failure, attachment.
forge_list_stepsGET /api/v1/runs/{run_id}/stepsA run's step records, newest first: loss, grad norm, learning rate, wall time.
forge_get_run_definitionGET /api/v1/runs/{run_id}/definitionWhat the run was asked to do (submitted) and what that resolved to.
forge_get_run_stop_conditionsGET /api/v1/runs/{run_id}/stop-conditionsEvery enabled stop condition with its target, latest value and headroom.
forge_list_boundariesGET /api/v1/runs/{run_id}/boundariesThe run's boundary records (test, retention, save, stop), newest first.
forge_list_batchesGET /api/v1/runs/{run_id}/batchesThe batch records the run consumed: where each came from, by content hash.
forge_get_batchGET /api/v1/runs/{run_id}/batches/{batch_sha256}One batch record.
forge_list_scoresGET /api/v1/runs/{run_id}/scoresThe run's test and retention scores, each with its sample size and provider.
forge_get_scores_at_stepGET /api/v1/runs/{run_id}/scores/{step}The scores recorded at one step, with their per-item detail.
forge_get_run_reviewGET /api/v1/runs/{run_id}/reviewThe run's human-review block: queue counts in miDataworks, or not configured.
forge_validate_runPOST /api/v1/runs/validateValidate a run definition with the same validator the create path uses.
forge_estimate_budgetPOST /api/v1/budget/estimateWill this run fit? The memory estimate beside each visible GPU's free memory.
forge_preflight_signal_sourcePOST /api/v1/signal-sources/preflightCheck a signal source can be read (parts present, columns resolved) without a run.
forge_submit_runPOST /api/v1/runsgpu_start / hotupdate_attachSubmit the acquisition-only run (POST /runs): load, create or attach, with its optimizer configuration.
forge_define_runPOST /api/v1/runs/definegpu_start / hotupdate_attachDefine and start a run: validated, recorded, leased, enqueued once approved.
forge_evaluate_nowPOST /api/v1/runs/{run_id}/evaluategpu_startEvaluate a run now, out of cadence, against its pinned provider (test and/or retention).
forge_cancel_runPOST /api/v1/runs/{run_id}/cancelRequest a cooperative stop: the run stops at its next step boundary.
forge_archive_runPOST /api/v1/runs/{run_id}/archiveHide a finished (completed, failed or cancelled) run from the default run lists.
forge_unarchive_runPOST /api/v1/runs/{run_id}/unarchiveReturn an archived run to the default run lists.

inputs (9)​

ToolCallsWaits forWhat it does
forge_list_signal_sourcesGET /api/v1/signal-sourcesThe four signal sources (corpus, self-generation, preference pairs, scored completions) and what each needs.
forge_list_partsGET /api/v1/partsThe indexed dataset parts (prompt sets, corpora, test and retention sets...).
forge_get_partGET /api/v1/parts/{part_id}One part: its provenance, splits and content hash.
forge_validate_partPOST /api/v1/parts/validateValidate a part manifest against the vendored contract.
forge_import_partPOST /api/v1/parts/importImport a dataset part (from a directory or miDataworks).
forge_midataworks_statusGET /api/v1/midataworks/statusWhether miDataworks is configured and reachable, and what is unavailable without it.
forge_midataworks_available_partsGET /api/v1/midataworks/available-partsDataset versions miDataworks offers as parts; refuses by name when not configured.
forge_archive_partPOST /api/v1/parts/{part_id}/archiveHide a part from the default part lists and pickers.
forge_unarchive_partPOST /api/v1/parts/{part_id}/unarchiveReturn an archived part to the default part lists.

checkpoints (8)​

ToolCallsWaits forWhat it does
forge_list_all_checkpointsGET /api/v1/checkpointsEvery indexed checkpoint across runs.
forge_list_checkpointsGET /api/v1/runs/{run_id}/checkpointsOne run's checkpoints, by step.
forge_get_checkpointGET /api/v1/runs/{run_id}/checkpoints/{step}One checkpoint's manifest: parent, base model, weights hash, scores.
forge_verify_checkpointPOST /api/v1/runs/{run_id}/checkpoints/{step}/verifyRecompute a checkpoint's weights hash against its manifest.
forge_get_checkpoint_lineageGET /api/v1/runs/{run_id}/checkpoints/{step}/lineageThe parent chain, walked through manifests to the root.
forge_get_treeGET /api/v1/treeThe artifact forest: checkpoints joined on parent, adapters on their base.
forge_request_savePOST /api/v1/runs/{run_id}/checkpointsAsk a running run to save at its next boundary.
forge_plan_branchPOST /api/v1/runs/{run_id}/checkpoints/{step}/branchPlan a branch from any checkpoint: a new run id, parent = this checkpoint.

hotupdate (3)​

ToolCallsWaits forWhat it does
forge_plan_continuePOST /api/v1/runs/{run_id}/continuePlan continuing a run from a checkpoint: which checkpoint, whether its trainer state is restored or fresh, and why.
forge_continue_runPOST /api/v1/runs/{run_id}/continuehotupdate_attachContinue an attached run from the checkpoint miLLM saved for it: verified, trainer state restored, a new attempt of the same run id.
forge_attachment_statusGET /api/v1/attachmentmiLLM's attachment state now, read live: configured, reachable, attached, holder, resident model, weights state.

adapters (4)​

ToolCallsWaits forWhat it does
forge_list_adaptersGET /api/v1/adaptersEvery adapter, with its base, rank and scaling.
forge_get_adapterGET /api/v1/adapters/{name}One adapter's manifest.
forge_list_mergesGET /api/v1/mergesThe merge record: written, interrupted or refused, each with its reason.
forge_merge_adapterPOST /api/v1/adapters/{name}/mergegpu_startMerge an adapter into its base, writing a merged checkpoint of the named run at the named step.

packs (10)​

ToolCallsWaits forWhat it does
forge_list_packsGET /api/v1/packsEvery pack version, with its domain, validity and the runs that used it.
forge_get_packGET /api/v1/packs/{pack_id}/versions/{version}One pack version: its slots and where each part comes from.
forge_get_pack_validityGET /api/v1/packs/{pack_id}/versions/{version}/validityWhether a pack version can define a run, and every missing or unresolved slot.
forge_get_pack_lineageGET /api/v1/packs/{pack_id}/versions/{version}/lineageWhere a pack version came from (cloned from, imported) and what derives from it.
forge_export_packGET /api/v1/packs/{pack_id}/versions/{version}/exportThe portable pack document, for another installation's forge_import_pack.
forge_get_pack_part_refGET /api/v1/pack-part-refs/{part_id}An indexed part as the reference a pack slot pins.
forge_create_packPOST /api/v1/packsCreate a pack version from slot documents.
forge_import_packPOST /api/v1/packs/importImport an exported pack document; an unresolvable one is stored and reported.
forge_clone_packPOST /api/v1/packs/{pack_id}/versions/{version}/cloneClone a pack version under a new name; the derivation is recorded.
forge_delete_packDELETE /api/v1/packs/{pack_id}/versions/{version}deleteDelete a pack version.

drafts (10)​

ToolCallsWaits forWhat it does
forge_list_draftsGET /api/v1/pack-draftsEvery pack draft in progress, with its current step.
forge_get_draftGET /api/v1/pack-drafts/{draft_id}One draft: its answers so far and each step's state.
forge_review_draftGET /api/v1/pack-drafts/{draft_id}/validityStep 7: what is still missing, by name.
forge_create_draftPOST /api/v1/pack-draftsStart a pack draft.
forge_commit_draft_stepPUT /api/v1/pack-drafts/{draft_id}/steps/{number}Commit one step's answers.
forge_sample_slotPOST /api/v1/pack-drafts/{draft_id}/samples/{slot}A seeded sample of a slot's part, for the authoring panel.
forge_score_samplePOST /api/v1/pack-drafts/{draft_id}/samples/{slot}/scoreScore a slot's sample with a selector or grader through a provider.
forge_dry_run_draftPOST /api/v1/pack-drafts/{draft_id}/dry-runDry-run the draft's selector over sampled completions.
forge_commit_draftPOST /api/v1/pack-drafts/{draft_id}/commitCommit a complete draft as a pack version.
forge_delete_draftDELETE /api/v1/pack-drafts/{draft_id}deleteDelete a pack draft.

chains (4)​

ToolCallsWaits forWhat it does
forge_list_chainsGET /api/v1/chainsEvery chain, newest first, with its position, status and halt code.
forge_get_chainGET /api/v1/chains/{chain_id}One chain: each stage's outcome and the advance decision for each finished stage.
forge_create_chainPOST /api/v1/chainsgpu_start / hotupdate_attachCreate a chain: every stage validated now, the card leased for the chain, stage 0 started once approved.
forge_stop_chainPOST /api/v1/chains/{chain_id}/stopHalt a chain and stop its running stage.

settings (4)​

ToolCallsWaits forWhat it does
forge_get_settingsGET /api/v1/settingsEvery setting: effective value, source (env or override) and whether it is runtime-writable.
forge_get_settings_historyGET /api/v1/settings/historyThe settings change history, newest first: each change's old and new value, who made it (the operator, or an agent with the approval that let it run) and why.
forge_set_settingPUT /api/v1/settings/{key}config_writeSet a runtime override for an allow-listed setting (checkpoint pruning, miLLM and miDataworks URLs, log_level, hot-update timeouts and tolerances).
forge_reset_settingDELETE /api/v1/settings/{key}config_writeClear a runtime override; the environment value applies again.

REST contract for proxies​

What this server - and a future miStudio proxy - relies on. Additive changes only.

ItemValue
BaseBackend under /api/, REST under /api/v1
HealthGET /api/health: {"status", "dependencies": {name: {"status", "detail"}}, "integrations"}; 200, or 503 with the same body when a dependency is degraded
SuccessPlain JSON resources
Error{"error": {"code", "message", "details"}}
HeaderX-Miforge-Agent: agent:<name> (lower case, digits, hyphens; at most 48 characters after agent:). This server sends agent:forge-mcp; a miStudio proxy would send agent:mistudio-mcp. A malformed or empty header is refused on every route with 400 invalid_agent_identity. A request without it is the operator's
Pending202 with {"approval_id", "status": "pending", "action", "summary", "request_digest", "expires_at", "hint"}
StatusGET /api/v1/approvals/{id}: pending, executing, executed (with result), failed (with error), rejected (with reason), expired
RefusalsAn agent approve or reject is 403 agent_cannot_decide; a second approve is 409 approval_not_pending
Approval actionsgpu_start, hotupdate_attach, delete, config_write
Class by requestA run, define or chain whose (stage-0) model_source.mode is attach waits for hotupdate_attach; continue waits only with submit: true
Validation firstA gated request is validated with the route's own code before it is stored; an invalid one is refused at once and never queued
DigestAn approval binds to the exact stored request; it executes once, in-process, with that payload
ExpiryA pending approval expires after 24 hours
TransportStreamable HTTP on port 8765 at /mcp; Authorization: Bearer <MCP_AUTH_TOKEN> on every request but /health
OpenAPIGET /api/openapi.json; gated operations carry x-approval-action (and x-approval-escalation)