{"name":"io.github.illodev/workfile","slug":"illodev-workfile","title":"Workfile","description":"Repository-native protocol and local MCP server for Work, Docs, History and durable project Memory.","url":"https://mcp.market/server/illodev-workfile","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":38,"stars":3,"forks":0,"downloads_week":663,"last_push_at":"2026-09-15T07:44:59.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/illodev/workfile","website":"https://workfiledemo.illodev.com","version":"0.13.2","remotes":[],"packages":[{"registryType":"npm","identifier":"@illodev/workfile","version":"0.13.2","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"Starts the stdio MCP server.","isRequired":true,"value":"mcp","type":"positional","valueHint":"mcp"},{"description":"Workspace root. Defaults to the working directory, searching upwards for .project/.","type":"named","name":"--root"},{"description":"Serves the read tools only, refusing every mutation.","type":"named","name":"--read-only"}]}],"tools":[{"name":"project_agent_context","description":"Build a compact context bundle around a card from direct relations, active conventions, open incidents and active project context. Prefer this over reading records one by one before working on a card.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_archive","description":"Move a closed card to the canonical archive directory. Only done and discarded cards can be archived; the ID and the file survive, so project_card_reopen undoes this.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_claim","description":"Claim a card for an actor, move it to doing and optionally declare the filesystem scope that will be changed. Claim before editing anything the card covers; another actor's claim is refused unless forced. Once the claim is written the card's verify entries run, and an entry whose verdict disagrees with the card — a criterion marked met that no longer holds, or one unchecked that already does — com","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_create","description":"Create one canonical Work card with a concurrency-safe stable ID. Search first: this mints a new record rather than finding an existing one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_card_list","description":"List cards filtered by status, area, type, priority, parent or claim. Use before starting work; use project_search for full-text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_note","description":"Append one timestamped line under a heading. Cheaper than rewriting the body and safe when two agents write at once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_patch","description":"Patch allowed card metadata using optimistic concurrency. Use expectedRevision whenever the card was read earlier.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_card_release","description":"Release your claim on a card and move it out of doing. Call when work stops, finished or not.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_reopen","description":"Move an archived card back out of the archive directory and into a live status. The ID never changes, so every existing reference to it keeps resolving.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_transition","description":"Move a card to another protocol status. Moving to doing claims the card for the actor; review means the implementation is finished but unverified, and done requires evidence it ran, not a commit.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_card_write","description":"Replace the Markdown body of a card under the protocol's lock and revision check. Use project_card_note to append instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_changelog_add","description":"Create an atomic unreleased changelog fragment and relate it to cards, decisions or other records. One fragment per user-visible change, written when the change lands rather than when the release is cut.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_changelog_list","description":"List unreleased change fragments and cut releases, filtered by type, area or visibility.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_changelog_patch","description":"Patch an unreleased changelog fragment using optimistic concurrency. Only works before a release consumes the fragment; afterwards the text belongs to that release.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_changelog_preview","description":"Render selected unreleased fragments without mutating the repository. Use to read a release before project_changelog_release makes it permanent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_changelog_release","description":"Consume selected unreleased fragments and create a canonical release record. This moves fragment files into the release directory, so preview first: the fragments stop being separately editable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_doc_create","description":"Create a managed Markdown document with a stable DOC ID. Without an explicit folder the workspace docs.layout decides where it is written.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_doc_list","description":"List indexed and managed documents, filtered by kind, status or freshness.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_doc_move","description":"Move a managed document to another folder below the managed docs root. The DOC ID never changes; use an empty folder for the root.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_doc_note","description":"Append one timestamped line under a heading of a managed document, creating the heading if needed. Cheaper than rewriting the body and safe when two agents write at once.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_doc_patch","description":"Patch a managed document using optimistic concurrency. Indexed repository docs are intentionally read-only through this tool — edit those files directly.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_doc_write","description":"Replace the Markdown body of a managed document under the protocol's lock and revision check, leaving its frontmatter as it is. Use project_doc_note to append instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_doctor","description":"Validate Work, Docs, History, Memory, agent instructions, CI templates and cross-record references. Run before declaring work finished.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_get_record","description":"Read one canonical project record by stable ID, including body, revision, outgoing references, backlinks and health signals. The revision it returns is what a later write passes as expectedRevision.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_memory_add","description":"Create a typed learning, decision, incident, convention or temporary context record. For knowledge that should change future behaviour — not for narrating what happened this session.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_memory_graduate","description":"Mark a learning as graduated and link it to the convention, decision or documentation that now carries the durable rule. Create the target record first — graduating points at something that must already exist.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_memory_list","description":"List learnings, decisions, incidents, conventions and context, filtered by collection or lifecycle status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_memory_patch","description":"Patch a durable memory record using optimistic concurrency. To retire one in favour of another use project_memory_supersede, which updates both sides.","write_action":true,"price_micros":0,"input_schema":null},{"name":"project_memory_supersede","description":"Supersede one memory record with another and update both sides atomically. Create the replacement first; neither record is deleted, so the superseded one stays readable and its ID keeps resolving.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_next","description":"Rank actionable cards: unblocked, unclaimed or claimed by you, highest priority first. Answers \"what should I do now\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_search","description":"Search cards, documentation, changelog entries, releases and durable memory. Uses deterministic lexical ranking and an injected semantic provider when available.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_workspace","description":"Return the effective Workfile workspace, schema, enabled modules and mutation mode. Read this first when a vocabulary is project-declared: it reports the areas, axes, document kinds, changelog types and memory collections this project accepts, and under cards.verification which verification methods each area accepts at done.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T19:54:10.499Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:54:10.473Z","components":{"code":{"score":25,"max":25,"notes":["184 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 5 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":"@illodev/workfile","version":"0.13.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-09-14T20:37:37.916Z","repositoryUrl":"git+https://github.com/illodev/workfile.git","weeklyDownloads":663}],"repo":{"found":true,"owner":"illodev","repo":"workfile","archived":false,"pushedAt":"2026-09-15T07:44:59Z","stars":3,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/55558169?v=4","ownerCreatedAt":"2019-09-19T19:24:09Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/55558169?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":3,"forks":0,"downloadsWeek":663,"license":"MIT","lastPushAt":"2026-09-15T07:44:59.000Z","score":38}}}},"grade_history":[],"reviews":[]}