{"name":"io.github.asklokesh/loki-mode","slug":"asklokesh-loki-mode","title":null,"description":"Autonomous spec-to-product coding-agent CLI with an MCP server exposing 36 tools over stdio.","url":"https://mcp.market/server/asklokesh-loki-mode","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce","ai"],"presence":{"score":62,"stars":1066,"forks":206,"downloads_week":4835,"last_push_at":"2026-09-15T16:33:08.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/asklokesh/loki-mode","website":null,"version":"9.50.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"loki-mode","version":"9.50.1","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"}]}],"tools":[{"name":"_to_thread","description":"Run a blocking callable off the event loop.","write_action":true,"price_micros":0,"input_schema":null},{"name":"bash","description":"Run a bash command in a persistent shell. State (cwd, env vars) persists across calls.","write_action":true,"price_micros":0,"input_schema":null},{"name":"edit","description":"Replace old_string with new_string in a file. old_string must be unique unless replace_all.","write_action":false,"price_micros":0,"input_schema":null},{"name":"glob","description":"Match files under the workdir against a glob pattern. Results are mtime-sorted, newest first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"grep","description":"Search file contents for a regex. Uses ripgrep if available, otherwise a built-in walker.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_agent_metrics","description":"Get agent metrics including token usage, task completion rates, and timing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_checkpoint_restore","description":"List available checkpoints or restore project state from a specific checkpoint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_code_search","description":"Search the loki-mode codebase semantically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_code_search_stats","description":"Get statistics about the code search index.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_complete_task","description":"Declare that the current PRD / task is complete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_consolidate_memory","description":"Run memory consolidation to extract patterns from recent episodes.","write_action":true,"price_micros":0,"input_schema":null},{"name":"loki_counter_evidence_template","description":"Generate a counter-evidence file template for the given iteration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_findings","description":"Read structured code-review findings for a given iteration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_get_co_changes","description":"Find files that frequently change together with a given file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_get_doc_coverage","description":"Get documentation coverage status for the project.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_get_hotspots","description":"Get the most frequently changed files in the repository.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_graph_query","description":"Answer a codebase question from a knowledge graph instead of reading files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_learnings","description":"Read recent learnings (newest first) from relevant-learnings.json.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_memory_capture_session_summary","description":"v7.7.18 capture wedge: store an episode for the current agent session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_memory_redact","description":"Redact memory versions in the managed-agents store whose content matches a regex.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_memory_retrieve","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_memory_store_pattern","description":"Store a new semantic pattern learned during this session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_metrics_efficiency","description":"Get efficiency metrics for the current session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_project_status","description":"Get the current project status including RARV cycle state, agent activity, and task progress.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_quality_report","description":"Get quality gate results including blind review scores, council verdicts, and test coverage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_start_project","description":"Start a new Loki Mode project from a PRD.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_state_get","description":"Get the current Loki Mode state including phase, metrics, and status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_task_queue_add","description":"Add a new task to the Loki Mode task queue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_task_queue_list","description":"List all tasks in the Loki Mode task queue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"loki_task_queue_update","description":"Update a task's status or priority.","write_action":true,"price_micros":0,"input_schema":null},{"name":"loki_verify_fast","description":"Verify code deterministically in milliseconds. No model call, no network.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_check_exists","description":"Cheap existence check for a symbol in the current workspace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_find_definition_by_name","description":"Find where a named symbol is defined, without needing a file position upfront. Convenience wrapper: runs workspace/symbol then returns the first result's location.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_find_references","description":"Find references to the symbol at the given file / line / character.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_get_diagnostics","description":"Return current LSP diagnostics (errors + warnings) for a file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_go_to_definition","description":"Resolve the definition location for the symbol at file / line / character.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_symbol_at_position","description":"Return the hover / symbol info at the given file / line / character. Uses LSP `textDocument/hover` which returns a `MarkupContent` plus an optional range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lsp_workspace_symbols","description":"Fuzzy-search symbols across the entire workspace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_get","description":"Fetch full details for one or more memory entries by ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_search","description":"Search memory using full-text search (FTS5).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mem_timeline","description":"Get chronological context from memory timeline.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read","description":"Read a UTF-8 text file relative to the workdir.","write_action":false,"price_micros":0,"input_schema":null},{"name":"write","description":"Write a UTF-8 text file relative to the workdir, creating parent directories as needed.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":77,"grade":"B","scanned_at":"2026-09-19T21:32:18.597Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-19T21:32:18.562Z","components":{"code":{"score":15,"max":25,"notes":["482 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 4 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"autonomy/run.sh: … # v7.5.8: Strict whitelist before eval (mirrors app-runner.sh # …"},{"id":"exec.shell-true","severity":"medium","component":"code","title":"subprocess with shell=True","evidence":"web-app/server.py: … # Start backend process (uses shell=True because command contains 'cd ...') …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"loki-mode","version":"9.50.1","found":true,"license":"BUSL-1.1","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-09-14T05:44:04.672Z","repositoryUrl":"git+https://github.com/asklokesh/loki-mode.git","weeklyDownloads":4835}],"repo":{"found":true,"owner":"asklokesh","repo":"loki-mode","archived":false,"pushedAt":"2026-09-15T16:33:08Z","stars":1066,"forks":206,"openIssues":13,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/49921737?v=4","ownerCreatedAt":"2019-04-23T18:59:11Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/49921737?v=4&s=128","source":"registry"},"presence":{"stars":1066,"forks":206,"downloadsWeek":4835,"license":"NOASSERTION","lastPushAt":"2026-09-15T16:33:08.000Z","score":62}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 77: eval / new Function used; subprocess with shell=True","createdAt":"2026-09-19T21:32:19.249Z"},{"kind":"restore","fromGrade":"D","toGrade":"C","reason":"score 58: Whole environment serialized (possible credential exfil); eval / new Function used; subprocess with shell=True","createdAt":"2026-09-19T21:04:12.201Z"},{"kind":"restore","fromGrade":"F","toGrade":"D","reason":"score 54: Whole environment serialized (possible credential exfil); curl | sh in a script; eval / new Function used","createdAt":"2026-09-19T18:55:47.631Z"}],"reviews":[]}