{"name":"io.github.adjective-rob/prelude","slug":"adjective-rob-prelude","title":null,"description":"Committed, machine-readable codebase context and code map that tells agents where to look.","url":"https://mcp.market/server/adjective-rob-prelude","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"maps","tags":["maps"],"presence":{"score":33,"stars":5,"forks":2,"downloads_week":146,"last_push_at":"2026-10-04T21:04:08.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/adjective-rob/prelude","website":null,"version":"1.11.0","remotes":[],"packages":[{"registryType":"npm","identifier":"prelude-context","version":"1.11.0","transport":{"type":"stdio"},"packageArguments":[{"value":"serve","type":"positional"}]}],"tools":[{"name":"prelude_annotate_module","description":"Correct or enrich what the map says about a module. Set `purpose` when the inferred purpose is wrong or missing; add `notes` for anything a future agent should know about this directory (gotchas, entry points, ownership). Manual purposes are never overwritten by prelude update.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_compact","description":"Get compact, token-efficient context for LLM prompt injection. Returns flat prefixed lines.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_link_projects","description":"Record how two projects relate so future sessions know the contract between them. Writes to the `from` project's project.json. Example: from=frontend, to=backend, relation=consumes, contract='REST /api/v1 with Supabase JWT bearer; see backend CLAUDE.md for routes'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_locate","description":"Find the files most relevant to a task before reading or grepping. Give a short phrase describing what you need to change or understand (e.g. 'billing checkout webhook', 'where manual edits are preserved'). Searches names, paths, and file contents, and returns ranked files with the reason each matched. Each result also carries what a text search cannot: how many files import it, the tests that cov","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_map","description":"Inspect the code map. With no arguments, returns the hub files to read first and a one-line summary of every module. With `module`, returns that module's purpose, notes, dependencies, tests, and files with exports. With `file`, returns that file's exports, resolved imports, importers count, and the module it belongs to.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_projects","description":"List every project registered in this workspace with its purpose, stack, entry points, API surface, hub files, and relationships to other projects. Call this first in any session that may touch more than one codebase, then use the returned name as the `project` argument on other tools.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_query","description":"Query project context by topic, scope, or type. Returns structured context about the codebase.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_record_decision","description":"Record an architectural decision in .context/decisions.json so future sessions inherit it. Use this whenever you choose between approaches, adopt or reject a library, or establish a convention. Keep the title under 80 characters and put the reasoning in rationale.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_status","description":"Check Prelude status — which context files exist and basic project info.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prelude_workspace_refresh","description":"Rebuild the workspace index after adding projects or running prelude update in one of them.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":74,"grade":"B","scanned_at":"2026-10-14T12:22:05.336Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T12:22:05.275Z","components":{"code":{"score":13,"max":25,"notes":["120 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 10 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"dist/src/commands/export.js: …mandExists(command) { try { execSync(`which ${command}`, { stdio: 'ignore' }); …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"prelude-context","version":"1.11.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":6,"publishedAt":"2026-10-04T21:03:49.170Z","repositoryUrl":"git+https://github.com/adjective-rob/prelude.git","weeklyDownloads":146}],"repo":{"found":true,"owner":"adjective-rob","repo":"prelude","archived":false,"pushedAt":"2026-10-04T21:04:08Z","stars":5,"forks":2,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/203582620?v=4","ownerCreatedAt":"2025-03-17T01:45:42Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/203582620?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":2,"downloadsWeek":146,"license":"MIT","lastPushAt":"2026-10-04T21:04:08.000Z","score":33}}}},"grade_history":[],"reviews":[]}