{"name":"io.github.Keesan12/martin-loop","slug":"keesan12-martin-loop","title":"Martin Loop","description":"One system around coding agents to run, verify, recover, and hand off software work.","url":"https://mcp.market/server/keesan12-martin-loop","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":50,"stars":190,"forks":48,"downloads_week":366,"last_push_at":"2026-09-19T02:58:06.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Keesan12/martin-loop","website":null,"version":"0.6.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@martinloop/mcp","version":"0.6.1","transport":{"type":"stdio"}}],"tools":[{"name":"martin_arcade","description":"Open the presentation-only MartinLoop Arcade when the host supports MCP Apps. The Arcade cannot change governed execution or evidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_arcade_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_cancel","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_continue","description":"Record a durable continue or resume request for a Martin run after a human pause or approval checkpoint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_create_pr","description":"Create or preview a GitHub PR with a MartinLoop dossier body. Use execute=true to actually call gh.","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_doctor","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_dossier","description":"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 re","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_estimate","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_eval","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_get_attempt","description":"Load one Martin attempt summary with artifact directory references for a canonical run.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_get_run","description":"Load one Martin run and return its budget, cost, verification, artifact, and canonical path summary.","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_get_verification_results","description":"Load structured verification evidence for a MartinLoop run — verifier commands, pass/fail outcomes, and contradiction signals — from stored loop events and ledger entries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_inspect","description":"Summarise Martin Loop run records from a saved loop file or run-store directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_list_runs","description":"List recent Martin runs from the run store with lightweight filters for status, lifecycle, engine metadata, and recency.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_logs","description":"Read recent MartinLoop events, ledger entries, and operator control receipts for a single run.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_pause","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_plan","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_pr_summary","description":"Generate a GitHub-ready pull-request title and Markdown body from a completed MartinLoop run dossier, including its verification grade and score.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_preflight","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_review_pr","description":"Review a PR body or draft against the MartinLoop run dossier and evaluation evidence, and return a verdict with specific findings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_run","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_run_dossier","description":"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 sharin","write_action":true,"price_micros":0,"input_schema":null},{"name":"martin_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"martin_triage_runs","description":"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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-20T00:26:01.392Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:26:01.392Z","components":{"code":{"score":25,"max":25,"notes":["68 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@martinloop/mcp","version":"0.6.1","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-09-07T22:25:30.349Z","repositoryUrl":"git+https://github.com/Keesan12/martin-loop.git","weeklyDownloads":366}],"repo":{"found":true,"owner":"Keesan12","repo":"martin-loop","archived":false,"pushedAt":"2026-09-19T02:58:06Z","stars":190,"forks":48,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/76763392?v=4","ownerCreatedAt":"2020-12-30T04:03:28Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/76763392?v=4&s=128","source":"github"},"presence":{"stars":190,"forks":48,"downloadsWeek":366,"license":"Apache-2.0","lastPushAt":"2026-09-19T02:58:06.000Z","score":50}}}},"grade_history":[],"reviews":[]}