Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Martin Loop

NPM · @MARTINLOOP/MCP · SCANNED SEP 20

One system around coding agents to run, verify, recover, and hand off software work.

Available components

0 this week 94 Trust /100
Trust breakdown (7 categories)

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
  • 45 of 137 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 Keesan12/martin-loop). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability86
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 4626 tokens (~100/item across 46 items; 24 tools + 22 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 81% of tool parameters carry a description.Partial
  • Structured output schemas are declared (96% of tools); any adoption earns full credit.Pass
Tool Safety88
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 1 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "martin_eval" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 25 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
Install

How do I install the Martin Loop MCP server?

Martin Loop runs locally as an npm package, launched with npx -y @martinloop/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 · @martinloop/mcp

# add to Claude Code
claude mcp add keesan12-martin-loop -- npx -y @martinloop/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "keesan12-martin-loop": {
      "command": "npx",
      "args": [
        "-y",
        "@martinloop/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "keesan12-martin-loop": {
      "command": "npx",
      "args": [
        "-y",
        "@martinloop/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add keesan12-martin-loop -- npx -y @martinloop/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "keesan12-martin-loop": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@martinloop/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add keesan12-martin-loop --command npx --arg -y --arg @martinloop/mcp
# ~/.hermes/config.yaml
mcp_servers:
  keesan12-martin-loop:
    command: "npx"
    args: ["-y", "@martinloop/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "keesan12-martin-loop": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@martinloop/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add keesan12-martin-loop -t stdio -c npx -a -y @martinloop/mcp
// mcp.json
{
  "mcpServers": {
    "keesan12-martin-loop": {
      "command": "npx",
      "args": [
        "-y",
        "@martinloop/mcp"
      ]
    }
  }
}
Changelog

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.

  • 20 Sept 26 −2
    • Stability: pass → 0.90 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

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

  • 13 Sept 26 −2
    • Stability: pass → 0.87 functional
  • 12 Sept 26 +1
    • Stability: 0.97 → pass security
  • 11 Sept 26 −1
    • Stability: pass → 0.97 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
  • 9 Sept 26 0
    • Schema quality: good → excellent functional
Diagnostics

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 20 Sept 2026 · Analysed npm/@martinloop/mcp@0.6.1

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 Keesan12/martin-loop
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/Keesan12/martin-loop/.github/workflows/publish-mcp.yml@refs/heads/main
Rekor log index 2753741228
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:ba6e6f8613aac6dfa9ee89aa33957730efa552f20b105fb95b6bd5d252f6d31dd385846101601b5dffe077346d5ab1dcabc5fa82c0e4e7deb92e5cc8b

Background: How many MCP packages publish verified provenance →

Dependencies 137 packages
Packages resolved 137
Stale 45
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 24 exposed · ~4,142 tokens

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 →

Tool Tokens
martin_arcade ~32

Open the presentation-only MartinLoop Arcade when the host supports MCP Apps. The Arcade cannot change governed execution or evidence.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

martin_arcade_status ~93

Read the read-only evidence projection used by the Arcade view. Provide loopId for one exact run or omit it to load the latest run. Use only for Arcade rendering; use martin_status for budget pressure or martin_run_dossier for full evidence. This tool reads persisted evidence and never changes run state.

NameTypeReqDescription
loopIdstringOptional MartinLoop run identifier. Omit it to read the latest persisted run.
NameTypeReqDescription
attemptsintegeryesNumber of recorded attempts.
budgetobjectyes
completedbooleanyesWhether the run is outside an active lifecycle state.
costobjectyes
displayOutcomeyesTerminal verified-handoff outcome, or null while the run is active.
lifecycleStatestringyesCurrent persisted lifecycle state.
loopIdstringyesRun identifier represented by this Arcade snapshot.
receiptIntegrityobjectyesPersisted receipt-integrity verdict.
verificationobjectyesPersisted verifier evidence summary.
warningsarrayyesEvidence or interpretation warnings for the Arcade view.

No examples provided.

martin_cancel ~202

Write a durable cancellation receipt for one canonical MartinLoop run. Provide exactly one selector: file, loopId, or latest; runsDir changes the run-store root, while reason and requestedBy add audit context. Use when work must be abandoned, not temporarily held. This records a request and does not kill a process; use martin_pause for a reversible hold.

NameTypeReqDescription
filestringPath to one canonical run record or directory. Mutually exclusive with loopId and latest.
latestWhen true, targets the latest canonical run. Mutually exclusive with file and loopId.
loopIdstringCanonical MartinLoop run identifier. Mutually exclusive with file and latest.
reasonstringOptional non-empty reason recorded in the cancellation receipt.
requestedBystringOptional human or runtime identity label recorded for audit context.
runsDirstringOptional run-store root override used to resolve loopId or latest.
NameTypeReqDescription
actionstringyesThe control action that was recorded.
controlIdstringyesUnique receipt ID for this control action.
loopIdstringyesMartinLoop run identifier the control was applied to.
reasonstringHuman-readable reason for the control, if provided.
requestedAtstringyesISO 8601 timestamp when the control was recorded.
requestedBystringIdentity that requested the control, if provided.

No examples provided.

martin_continue ~70

Record a durable continue or resume request for a Martin run after a human pause or approval checkpoint.

NameTypeReqDescription
filestring
latest
loopIdstring
reasonstring
requestedBystring
runsDirstring
NameTypeReqDescription
actionstringyesThe control action that was recorded.
controlIdstringyesUnique receipt ID for this control action.
loopIdstringyesMartinLoop run identifier the control was applied to.
reasonstringHuman-readable reason for the control, if provided.
requestedAtstringyesISO 8601 timestamp when the control was recorded.
requestedBystringIdentity that requested the control, if provided.

No examples provided.

martin_create_pr ~87

Create or preview a GitHub PR with a MartinLoop dossier body. Use execute=true to actually call gh.

NameTypeReqDescription
basestring
executeboolean
filestring
formatstring
latest
loopIdstring
runsDirstring
titlestring
NameTypeReqDescription
bodystringyesGitHub-flavoured Markdown PR body containing the run dossier.
gradestringyesVerification grade assigned to the run.
loopIdstringyesMartinLoop run identifier used to generate the summary.
scorenumberyesNumeric verification score from 0–100.
titlestringyesSuggested GitHub pull-request title.

No examples provided.

martin_doctor ~122

Read-only environment, engine, workspace, and run-store diagnostics for MartinLoop. Use first for software work, fresh installs, suspicious state, or before retries. Do not use as proof that a task is complete. Next: call martin_estimate or martin_triage_runs depending on whether this is new work or failed prior work.

NameTypeReqDescription
enginestringOptional engine to highlight in diagnostics.
runsDirstringOptional runs-root override resolved under the default Martin runs root.
workingDirectorystringOptional repo-root override for doctor context.
NameTypeReqDescription
enginesobjectyes
environmentobjectyes
receiptScopeobjectyes
requestedEnginestring
runStoreobjectyes
serverobjectyes
statusstringyes
summarystringyes
warningsarrayyes

No examples provided.

martin_dossier ~207

Read a formatted evidence summary for one MartinLoop run. Provide exactly one selector: file, loopId, or latest; runsDir changes the run-store root. Set format to json, md, or github-pr; json is the default. Use after martin_run, before merge or release claims, or when sharing what happened. Do not use as a substitute for missing verifier evidence; use martin_run_dossier for the full structured record. Next: review verification results, retry, or hand off the receipt.

NameTypeReqDescription
filestringPath to one run record or directory. Mutually exclusive with loopId and latest.
formatstringOutput format. Defaults to json.
latestWhen true, loads the latest run. Mutually exclusive with file and loopId.
loopIdstringMartinLoop run identifier. Mutually exclusive with file and latest.
runsDirstringOptional run-store root override used to resolve loopId or latest.
NameTypeReqDescription
artifactsobjectyes
attemptsarrayyes
budgetobjectyes
costobjectyes
inspectionobjectyes
loopobjectyes
recentEventsarrayyes
relatedobjectyes
sourcestringyes
sourceKindstringyes
verificationobjectyes
warningsarrayyes

No examples provided.

martin_estimate ~162

Read-only cost, route, and pre-work burn estimate for a software objective. Use before planning/preflight when a change may spend agent time or exceed budget. Do not use for casual questions or as permission to execute. Next: call martin_plan if the estimate is acceptable, or ask for consent if budget/risk is high.

NameTypeReqDescription
budgetUsdnumberBudget ceiling for estimation. Defaults to 5.
enginestringWhich agent CLI would be used. Defaults to claude.
fileScopearrayOptional file paths to scope the estimate.
objectivestringyesThe coding task to estimate.
workingDirectorystringOptional workspace path for recording the estimate receipt against the same task root you plan to run.
NameTypeReqDescription
blockedStepsarray
budgetUsdnumberyes
compressedboolean
compressionSummarystring
confidencenumberyes
enginestringyes
expectedCostUsdnumberyes
expectedPreworkBurnPctnumberyes
objectivestringyes
reasonarrayyes
recommendedBudgetUsdnumber
selectedModestringyes

No examples provided.

martin_eval ~235

Grade a MartinLoop run across six dimensions — task completion, verifier health, diff discipline, regression risk, security risk, and reviewability — and return a scored merge-readiness verdict. Use after a governed run completes to decide whether the result is safe to merge or promote. Use before martin_pr_summary or martin_create_pr to confirm the run is merge-ready. Do not use to retrieve raw verification command output — use martin_get_verification_results for that. Do not use to review an existing PR body — use martin_review_pr instead. This tool reads saved run evidence and inspects local git signals; it does not modify state or contact GitHub.

NameTypeReqDescription
filestringAbsolute or relative path to a loop-record.json file or run directory. Mutually exclusive with loopId and latest.
latestWhen true, evaluates the most recently updated run in the run store. Mutually exclusive with file and loopId.
loopIdstringMartinLoop run identifier from the run store. Mutually exclusive with file and latest.
runsDirstringOverride the default run-store root directory. Optional.
NameTypeReqDescription
checksobjectyes
gradestringyesOverall merge readiness grade derived from the six check dimensions.
loopIdstringyesUnique MartinLoop run identifier.
scorenumberyesNumeric evaluation score from 0–100.
sourcestringyesResolved path to the loop-record source file.
sourceKindstringyesHow the run was identified.
summarystringyesOne-paragraph plain-English evaluation summary.
warningsarrayyesNon-blocking advisory warnings from the evaluation.

No examples provided.

martin_get_attempt ~85

Load one Martin attempt summary with artifact directory references for a canonical run.

NameTypeReqDescription
attemptIndexintegerAttempt index to inspect. Defaults to the latest attempt.
filestringPath to a canonical loop-record.json file or run directory.
loopIdstringLoop ID under the run store.
runsDirstringOptional runs-root override.
NameTypeReqDescription
attemptobjectyes
loopobjectyes
sourcestringyes
sourceKindstringyes
warningsarrayyes

No examples provided.

martin_get_run ~96

Load one Martin run and return its budget, cost, verification, artifact, and canonical path summary.

NameTypeReqDescription
filestringPath to a canonical loop-record.json, legacy file, or run-store directory.
latestWhen true, loads the most recently updated loop record in the run store.
loopIdstringLoop ID under the run store.
runsDirstringOptional runs-root override.
NameTypeReqDescription
artifactsobjectyes
budgetobjectyes
costobjectyes
inspectionobjectyes
loopobjectyes
sourcestringyes
sourceKindstringyes
verificationobjectyes
warningsarrayyes

No examples provided.

martin_get_verification_results ~184

Load structured verification evidence for a MartinLoop run — verifier commands, pass/fail outcomes, and contradiction signals — from stored loop events and ledger entries. Use after a run completes to confirm whether automated verifiers passed before merging or promoting the result. Do not use to get a merge-readiness grade — use martin_eval for a scored grade with six check dimensions. Do not use for live run status — use martin_get_status instead. This tool only reads persisted run files and does not execute commands, modify state, or contact GitHub.

NameTypeReqDescription
filestringAbsolute or relative path to a loop-record.json file or run directory. Mutually exclusive with loopId.
loopIdstringMartinLoop run identifier from the run store. Mutually exclusive with file.
runsDirstringOverride the default run-store root directory. Optional.
NameTypeReqDescription
loopobjectyes
sourcestringyes
sourceKindstringyes
verificationobjectyes
warningsarrayyes

No examples provided.

martin_inspect ~78

Summarise Martin Loop run records from a saved loop file or run-store directory.

NameTypeReqDescription
filestringOptional path under the Martin runs root to a loop-record.json file, a legacy .jsonl file, or a run-store directory.
runsDirstringOptional runs-root override resolved under the default Martin runs root.
NameTypeReqDescription
inspectionobjectyes
latestRunobject
lifecycleBreakdownobjectyes
loopCountintegeryes
portfolioobjectyes
recentRunsarrayyes
sourcestringyes
statusBreakdownobjectyes
warningsarrayyes

No examples provided.

martin_list_runs ~127

List recent Martin runs from the run store with lightweight filters for status, lifecycle, engine metadata, and recency.

NameTypeReqDescription
adapterIdstringFilter by attempt adapter ID.
lifecycleStatestringFilter by lifecycle state.
limitintegerMaximum number of runs to return. Defaults to 20.
modelstringFilter by attempt model.
runsDirstringOptional runs-root override.
statusstringFilter by loop status.
updatedAfterstringOptional ISO-8601 timestamp for recency filtering.
NameTypeReqDescription
filtersobjectyes
latestRunobject
lifecycleBreakdownobjectyes
loopCountintegeryes
recentRunsarrayyes
runsRootstringyes
sourcestringyes
statusBreakdownobjectyes
warningsarrayyes

No examples provided.

martin_logs ~227

Read recent MartinLoop events, ledger entries, and operator control receipts for a single run. Use to observe live or completed run activity, diagnose stuck or failed runs, or audit operator actions. Do not use to check run completion status — use martin_get_status instead. Do not use to retrieve verification evidence — use martin_get_verification_results instead. This tool only reads persisted run files and does not execute commands, modify state, or contact GitHub.

NameTypeReqDescription
filestringAbsolute or relative path to a loop-record.json file or run directory. Mutually exclusive with loopId and latest.
latestWhen true, loads the most recently updated run in the run store. Mutually exclusive with file and loopId.
limitintegerMaximum number of log entries to return, sorted by timestamp descending. Defaults to 20.
loopIdstringMartinLoop run identifier from the run store. Mutually exclusive with file and latest.
runsDirstringOverride the default run-store root directory. Optional; defaults to the MartinLoop runs directory.
NameTypeReqDescription
entriesarrayyesLog entries sorted by timestamp descending, capped at limit.
liveobjectyes
logCountintegeryesNumber of log entries returned after applying the limit.
loopIdstringyesUnique MartinLoop run identifier.
sourcestringyesResolved path to the loop-record source file.
sourceKindstringyesHow the run was identified: by file path, loop ID, latest flag, or runs directory.

No examples provided.

martin_pause ~206

Write a durable pause receipt for one canonical MartinLoop run. Provide exactly one selector: file, loopId, or latest; runsDir changes the run-store root, while reason and requestedBy add audit context. Use for a temporary hold before risky follow-up work. This records a request and does not kill a process; use martin_cancel to abandon work or martin_continue to resume.

NameTypeReqDescription
filestringPath to one canonical run record or directory. Mutually exclusive with loopId and latest.
latestWhen true, targets the latest canonical run. Mutually exclusive with file and loopId.
loopIdstringCanonical MartinLoop run identifier. Mutually exclusive with file and latest.
reasonstringOptional non-empty reason recorded in the pause receipt.
requestedBystringOptional human or runtime identity label recorded for audit context.
runsDirstringOptional run-store root override used to resolve loopId or latest.
NameTypeReqDescription
actionstringyesThe control action that was recorded.
controlIdstringyesUnique receipt ID for this control action.
loopIdstringyesMartinLoop run identifier the control was applied to.
reasonstringHuman-readable reason for the control, if provided.
requestedAtstringyesISO 8601 timestamp when the control was recorded.
requestedBystringIdentity that requested the control, if provided.

No examples provided.

martin_plan ~191

Read-only planning step that turns an objective into bounded scope, verifier proposal, policy pack, and risk recommendation. Use for authorized software changes before preflight/run. Do not use to mutate files or replace the verifier. Next: call martin_preflight with the chosen scope, budget, and verifier.

NameTypeReqDescription
allowedPathsarray
contextstringOptional extra issue or bug context.
deniedPathsarray
maxCommandsinteger
maxFilesChangedinteger
maxIterationsinteger
maxMinutesinteger
maxTokensinteger
maxUsdnumber
objectivestringyesThe coding objective to plan.
policyPackstring
verificationPlanarray
workingDirectorystringOptional repo-root override resolved under the MCP workspace root.

Structured output declared, but exposes no named fields.

No examples provided.

martin_pr_summary ~242

Generate a GitHub-ready pull-request title and Markdown body from a completed MartinLoop run dossier, including its verification grade and score. Use after a governed run completes when you need PR copy without creating the PR. Use martin_create_pr instead to actually open the PR on GitHub. Use martin_review_pr to evaluate an existing PR body against run evidence. Use martin_eval first if you need a merge-readiness grade before generating the PR body. This tool only reads saved run evidence and does not modify the repository or contact GitHub.

NameTypeReqDescription
filestringAbsolute or relative path to a loop-record.json file or run directory. Mutually exclusive with loopId and latest.
formatstringDossier rendering format. Defaults to github-pr for PR body generation. Use md for plain Markdown or json for structured output.
latestWhen true, generates the summary for the most recently updated run. Mutually exclusive with file and loopId.
loopIdstringMartinLoop run identifier from the run store. Mutually exclusive with file and latest.
runsDirstringOverride the default run-store root directory. Optional.
NameTypeReqDescription
bodystringyesGitHub-flavoured Markdown PR body containing the run dossier.
gradestringyesVerification grade assigned to the run.
loopIdstringyesMartinLoop run identifier used to generate the summary.
scorenumberyesNumeric verification score from 0–100.
titlestringyesSuggested GitHub pull-request title.

No examples provided.

martin_preflight ~304

Read-only validation of the exact run contract before execution or spend. Use after planning and before martin_run to check engine, verifier, path scope, and budget. Do not use as execution or completion proof. Next: call martin_run if allowed, otherwise resolve the reported blocker.

NameTypeReqDescription
allowedPathsarrayRepo-relative path globs Martin may modify.
contextstringOptional issue context carried into the run contract.
deniedPathsarrayRepo-relative path globs Martin must never modify.
enginestringWhich agent CLI would be used. Defaults to claude.
maxCommandsintegerEstimated maximum commands allowed for the run contract.
maxFilesChangedintegerEstimated maximum files changed for the run contract.
maxIterationsintegerMaximum number of loop attempts.
maxMinutesintegerEstimated wall-clock minutes allowed for the run contract.
maxTokensintegerMaximum total tokens across all attempts.
maxUsdnumberHard budget ceiling in USD.
modelstringModel override passed to the CLI.
objectivestringyesThe coding task to validate.
policyPackstring
projectIdstring
verificationPlanarrayCommands that must all exit 0 for completion.
workingDirectorystringOptional repo-root override resolved under the MCP workspace root.
workspaceIdstring
NameTypeReqDescription
executionobjectyes
normalizedobjectyes
okbooleanyes
readinessobjectyes
receiptScopeobjectyes
summarystringyes
warningsarrayyes

No examples provided.

martin_review_pr ~268

Review a PR body or draft against the MartinLoop run dossier and evaluation evidence, and return a verdict with specific findings. Use when you have an existing PR body and want to check whether it accurately represents the governed run evidence. Supply prBody to review a specific body string; omit it to evaluate the auto-generated dossier body. Do not use to generate a PR body from scratch — use martin_pr_summary instead. Do not use to open or create a PR — use martin_create_pr instead. This tool only reads saved run evidence and does not modify the repository or contact GitHub.

NameTypeReqDescription
filestringAbsolute or relative path to a loop-record.json file or run directory. Mutually exclusive with loopId and latest.
formatstringDossier format used when generating the reference body for comparison. Defaults to github-pr.
latestWhen true, reviews against the most recently updated run. Mutually exclusive with file and loopId.
loopIdstringMartinLoop run identifier from the run store. Mutually exclusive with file and latest.
prBodystringThe PR body text to review. If omitted, the auto-generated dossier body is evaluated instead.
runsDirstringOverride the default run-store root directory. Optional.
NameTypeReqDescription
findingsarrayyesSpecific findings that informed the verdict.
loopIdstringyesMartinLoop run identifier the review was performed against.
summarystringyesPlain-English review summary.
verdictstringyesMerge verdict: approve_with_review means safe to merge with human review; needs_changes requires fixes; blocked means do not merge.

No examples provided.

martin_run ~313

Execute a governed MartinLoop coding run after MCP workflow admission is satisfied. Use when the user has authorized implementation, bug fixing, tests, or refactoring and doctor/estimate/plan/preflight receipts match this task. Do not use for question-only diagnosis or when policy, budget, credentials, or scope still need consent. Next: read martin_dossier and verifier evidence.

NameTypeReqDescription
allowedPathsarrayRepo-relative path globs Martin may modify.
deniedPathsarrayRepo-relative path globs Martin must never modify.
enginestringWhich agent CLI to use. Defaults to claude.
maxIterationsintegerMaximum number of loop attempts.
maxTokensintegerMaximum total tokens across all attempts.
maxUsdnumberHard budget ceiling in USD.
modelstringOptional model override passed to the CLI.
objectivestringyesThe coding task to complete. Be specific about what needs to change.
projectIdstringProject identifier for telemetry.
providerExecutionTimeoutMsintegerHard timeout for each provider coding process in milliseconds.
verificationPlanarrayCommands that must all exit 0 for the task to be considered complete.
verifyTimeoutMsintegerHard timeout for each verifier command in milliseconds.
workingDirectorystringOptional repo-root override resolved under the MCP workspace root. Must stay within that safe root.
workspaceIdstringWorkspace identifier for telemetry.
NameTypeReqDescription
attemptsintegeryes
budgetobjectyes
costUsdnumberyes
enginestringyes
inspectionobjectyes
lifecycleStatestringyes
loopIdstringyes
pressurestringyes
reasonstringyes
remainingBudgetUsdnumberyes
remainingIterationsintegeryes
remainingTokensinteger
shouldStopbooleanyes
statusstringyes
verificationPassedbooleanyes
workingDirectorystringyes

No examples provided.

martin_run_dossier ~190

Read the full structured execution dossier for one MartinLoop run, including attempts, events, artifacts, verification, integrity, cost, and related discovery surfaces. Provide exactly one selector: file, loopId, or latest; runsDir changes the run-store root. Use for comprehensive evidence review. Do not use for a compact state check; use martin_get_run, or use martin_dossier when formatted sharing output is required.

NameTypeReqDescription
filestringPath to a canonical loop-record.json, legacy file, or run-store directory. Mutually exclusive with loopId and latest.
latestWhen true, loads the most recently updated loop record. Mutually exclusive with file and loopId.
loopIdstringLoop ID under the run store. Mutually exclusive with file and latest.
runsDirstringOptional run-store root override used to resolve loopId or latest.
NameTypeReqDescription
artifactsobjectyes
attemptsarrayyes
budgetobjectyes
costobjectyes
inspectionobjectyes
loopobjectyes
recentEventsarrayyes
relatedobjectyes
sourcestringyes
sourceKindstringyes
verificationobjectyes
warningsarrayyes

No examples provided.

martin_status ~235

Read the current budget, cost, remaining limits, and stop pressure for one MartinLoop run. Provide exactly one selector: loopJson for an inline record, file for a saved record, loopId for a run-store ID, or latest for the newest run; runsDir only changes the run-store root. Use for a compact budget check. Do not use for full events or artifacts; use martin_get_run or martin_run_dossier instead.

NameTypeReqDescription
filestringPath under the Martin runs root to a loop-record.json file, a legacy .jsonl file, or a run-store directory. Mutually exclusive with loopJson, loopId, and latest.
latestWhen true, loads the most recently updated loop record. Mutually exclusive with loopJson, file, and loopId.
loopIdstringLoop ID resolved as <runsDir>/<loopId>/loop-record.json. Mutually exclusive with loopJson, file, and latest.
loopJsonstringJSON-serialized LoopRecord.
runsDirstringOptional runs-root override resolved under the default Martin runs root.
NameTypeReqDescription
attemptsintegeryes
avoidedUsdnumberyes
budgetobjectyes
costUsdnumberyes
inspectionobjectyes
lifecycleStatestringyes
loopIdstringyes
pressurestringyes
remainingBudgetUsdnumberyes
remainingIterationsintegeryes
remainingTokensinteger
shouldStopbooleanyes
sourcestringyes
statusstringyes

No examples provided.

martin_triage_runs ~186

Read-only prioritization of saved Martin runs that need attention. Use when the user says a prior attempt failed, asks what to fix next, or resumes an interrupted session. Do not use for a brand-new objective with no relevant run history. Next: inspect the selected run or dossier before retrying.

NameTypeReqDescription
adapterIdstringFilter by attempt adapter ID.
includeHealthybooleanWhen true, include healthy runs instead of only attention-worthy findings.
lifecycleStatestringFilter by lifecycle state.
limitintegerMaximum number of runs to triage. Defaults to 20.
modelstringFilter by attempt model.
runsDirstringOptional runs-root override.
statusstringFilter by loop status.
updatedAfterstringOptional ISO-8601 timestamp for recency filtering.
NameTypeReqDescription
evaluatedRunsintegeryes
filtersobjectyes
findingCountintegeryes
findingsarrayyes
runsRootstringyes
severityBreakdownobjectyes
sourcestringyes
warningsarrayyes

No examples provided.

Common questions

What is the Martin Loop MCP server?

Martin Loop is an MCP server listed in the public MCP registry as io.github.Keesan12/martin-loop. One system around coding agents to run, verify, recover, and hand off software work. This page covers its npm package (@martinloop/mcp).

Is the Martin Loop MCP server safe to use?

Martin Loop scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 Martin Loop MCP server expose?

Martin Loop exposes 24 tools: martin_run, martin_inspect, martin_status, martin_doctor, martin_plan, and 19 more. Their descriptions and schemas cost roughly 4,142 tokens of context every time the server is loaded.

Is the Martin Loop MCP server still maintained?

Martin Loop is still listed as active in the MCP registry. We last reached this channel on 20 September 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 Martin Loop MCP server under?

Martin Loop declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.