agentboard (Vladev0/agentboard) is an MCP server listed on the M8ven Trust Index. It scores 66 out of 100, grade C. It declares 17 tools. No publisher has claimed this listing.
A local task tracker with Kanban board and MCP server for AI agents, enabling task management via markdown files and providing tools for agents to query and update tasks.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
Vladev0
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
list_projectsList every project in the vault with task counts by status. Does not return the tasks themselves — use list_tasks for that.
create_projectCreate a new project in the vault. `key` is a short prefix for task IDs (e.g. WEB); it's derived from the name if omitted.
delete_projectPermanently delete a project — all of its tasks and history, unrecoverable. Only on an explicit human request, never on your own guess.
list_tasksA lightweight list of a project's tasks (no descriptions/history/comments) — saves context. Use get_task for the details of one.
get_taskThe full card for one task: description, versioned updates (the task's evolution), comments, technical activity, and subtasks. Request only when you need the details of a specific task.
get_next_taskRecommends the next task to work on: not blocked, not in the terminal status, lowest `order` first (ties broken by priority). With no `parent`, it searches the whole project at every depth — so nested-only work isn't missed; pass a `parent` id to scope the search to that task's direct subtasks. Use …
create_taskCreate a new top-level task in a project.
create_subtaskCreate a subtask inside an existing task (to break a plan down without holding it all in your own context).
update_statusChange a task's status. This is routine bookkeeping — it goes into the task's technical activity, not its versioned updates.
set_needs_inputFlag (or unflag) a task as waiting on a human decision — independent of status, since work can stall at any stage of the pipeline, not just in a dedicated column. A task flagged this way stops being suggested by get_next_task. Once the human has answered (in a comment), clear it by calling again wit…
update_taskChange fields on an existing task (title, priority, labels, order, blockers, assignee) without changing status and without creating an update — this is also routine bookkeeping, logged to technical activity. Pass only the fields you're changing.
update_descriptionRecord a 'big update' to a task: rewrite the description once discussion/work has led to a decision about what should change. `summary` is a required short note on WHAT changed and WHY (like a commit message). Each call creates a new version with a full snapshot of the description — this builds the …
add_commentLeave a comment on a task — discussion, a clarifying question for the human, a passing remark while working. To actually change the task's substance (its description) once discussion has led somewhere, use update_description, not this.
list_notesThe index of the project's memory: one line per knowledge note (id, title, hook). Read this at the START of every session, before get_next_task — it's tiny, and it tells you what's already been settled so you don't re-derive or contradict it. Then get_note only the entries relevant to your current t…
get_noteOne knowledge note in full: body = the CURRENT truth (latest formulas, chosen approach), history = how it got there (versioned summaries — read these when you need to know why something changed). Notes are addressed by [[id]] wikilinks — when a task description mentions [[some-note]], this is how yo…
upsert_noteCreate or update a knowledge note — the project's memory. WHEN: you've just settled something reusable (a final formula, a validated approach, a decision and its why, a costly pitfall) — write it AT THAT MOMENT, don't wait for the task to close. Test: 'will a session that never saw this task need it…
delete_taskPermanently delete a task (its file and all its history) — e.g. a duplicate, or a subtask that's no longer needed. Cascades to all of its subtasks. Irreversible — not for changing status, use update_status for that.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
When Vitest UI server is listening, arbitrary file can be read and executed
@fastify/static vulnerable to route guard bypass via path traversal
Fastify's Content-Type header tab character allows body validation bypass
@fastify/static vulnerable to Authorization Bypass via Non-Canonical URL Paths
fastify: request.protocol and request.host Spoofable via X-Forwarded-Proto/Host from Untrusted Connections
AGENTBOARD_VAULTThe file is gitignored — every machine/fork keeps its own. /PORT env vars, if set, always take priority over the file.PORTTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
17/17 tools missing one or more hints — list_projects (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); create_project (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); delete_project (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +14 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool test coverage
Only 0/17 tools referenced in tests (0%)
Write tests that reference each tool by name so every tool has at least one test.
Production dependencies are patched
0 critical, 2 high severity in production deps — @fastify/static@7.0.4 (high), fastify@4.29.1 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dev dependencies
1 critical/high in dev-only deps (does not ship to users)
Upgrade dev dependencies when convenient.
Dependency freshness
1/7 production deps stale: gray-matter@2023-07-12 (3.1y)
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/vladev0/agentboard)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check