knowledge-engineering (subagentceo/knowledge-engineering) is an MCP server listed on the M8ven Trust Index. It scores 30 out of 100, grade F. It declares 122 tools. No publisher has claimed this listing.
subagentceo ad-hoc r&d developer portal for polyrepo knowledge-engineering
Warning. Serious findings were identified. Review the full report before connecting. 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
subagentceo
Source: github_code
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.
envelope_writeValidate and append a DurableTask envelope to its domain JSONL queue.
envelope_readRead current task state from a domain JSONL queue (latest-line-wins per id).
task_transitionAppend a state transition for a task. Validates the transition is legal.
mailbox_sendSend a typed message from one agent to another (or broadcast). Appended to recipient's JSONL.
mailbox_recvRead unacked messages for an agent from its mailbox JSONL.
mailbox_ackAck a message — appends an ack row to the mailbox JSONL.
queue_statusSummary counts (pending/in_progress/blocked/completed/failed) for all domain queues.
lint_claude_action_workflowLint a .github/workflows/claude*.yml file for OAUTO13 security baseline. Returns an array of findings, each with severity (ERROR|WARNING|INFO), rule, line, message. Empty array = clean.
tailscale_devicesList all devices in the Tailscale network with their hostnames, IPs, OS, and last-seen time.
tailscale_pingLook up a Tailscale device by hostname fragment and return its full record (IPs, OS, last seen). Does not send ICMP — uses API lookup.
tailscale_routesList subnet routes advertised on this tailnet, including their enabled/advertised state.
tailscale_aclFetch the current ACL policy for the tailnet. Returns the Tailscale HuJSON ACL document.
create_taskCreate a durable task via pg_durable
get_taskRetrieve a task by id — L1 → L2 → pg_durable
complete_taskMark a pg_durable task as completed and evict from cache
list_tasksList pending tasks from a pg_durable queue
list_collectionsList the support collections in the local mirror (id-slug + title).
list_articlesList article .md files in a collection (by its id-slug).
read_articleRead one article's markdown by collection id-slug + filename.
agent_directoryThe 15-agent registry (5 functions x 3 tiers) + the named teams.
team_dispatchFan one Envelope out to every member of a named team (the cowork coordination primitive).
replyReply on Discord. Pass chat_id from the inbound message. Optionally pass reply_to (message_id) for threading, and files (absolute paths) to attach images or other files.
reactAdd an emoji reaction to a Discord message. Unicode emoji work directly; custom emoji need the <:name:id> form.
edit_messageEdit a message the bot previously sent. Useful for interim progress updates. Edits don't trigger push notifications — send a new reply when a long task completes so the user's device pings.
download_attachmentDownload attachments from a specific Discord message to the local inbox. Use after fetch_messages shows a message has attachments (marked with +Natt). Returns file paths ready to Read.
fetch_messagesFetch recent messages from a Discord channel. Returns oldest-first with message IDs. Discord's search API isn't exposed to bots, so this is the only way to look back.
chat_messagesFetch recent iMessage history as readable conversation threads. Each thread is labelled DM or Group with its participant list, followed by timestamped messages. Omit chat_guid to see all allowlisted chats at once; pass a specific chat_guid to drill into one thread. Reads chat.db directly — full nati…
search_toolsProgressive-disclosure tool discovery for the codemode runtime. Searches across servers/<name>/README.md catalogs and returns matching tools with their qualified names + (optional) descriptions. Use this to find tools by capability instead of loading every tool definition into context up front. Cite…
npm_downloadsDownload counts for a package over a window (last-day | last-week | last-month). Source: https://api.npmjs.org/downloads/point/{period}/{package}.
npm_org_packagesList all packages owned by an npm organization. Returns name + role per package. Source: https://www.npmjs.com/org/{org}/package.
npm_package_metadataFetch a package document from the npm registry: versions, dist-tags, maintainers, latest manifest. Source: https://registry.npmjs.org/{package}.
npm_searchFull-text search the npm registry. Returns up to `size` results with name, description, and score. Source: https://registry.npmjs.org/-/v1/search.
engineering_indexList posts on https://www.anthropic.com/engineering. Returns title + url for each post discovered on the index page.
engineering_fetchFetch a specific engineering post. Accepts either a full https://www.anthropic.com/engineering/<slug> URL or the slug alone. Mirror-first: returns local body when present (source:'mirror'), else falls back to live HTTP (source:'http').
engineering_searchText-match the engineering index titles. Case-insensitive substring search; returns the matching entries.
vendor_cache_statsTiered semantic-cache health: per-tier (L1/L2/L3) hit ratios and hottest keys from dw.fact_cache_hits, live Redis L2 key count, and L3 semantic_cache row count. Sources that are unreachable report null instead of failing.
citations_searchSearch the mirrored citation corpus (CSL-JSON items extracted from vendor/). BM25-ranked (title boosted) with substring fallback for id-shaped queries. Returns up to `limit` items plus ranking meta.
citations_getFetch one CSL-JSON citation item by its id (e.g. anthropic-sitemap:research:clio). The item loads unchanged into citeproc/Zotero and maps onto Claude citations blocks.
citations_by_yearPublication-year histogram over the citation corpus (only items with a parsed issued date).
memory_readRead a citation memory (managed-agents path+content shape). Reads dw.dim_memory's current row when postgres is configured (logging the access); otherwise derives the memory from the mirrored corpus. Accepts a memory path (/citations/<slug>.md) or a csl id.
memory_writeWrite a citation memory version (SCD II: closes the current row, inserts curation_source='agent'). Requires postgres (dim_memory allowed_operations: scd2_rewrite). Body is markdown; preserve the csl-json block when editing an existing memory.
citations_by_teamCitations attributed to an Anthropic research team page (economic-research, alignment, interpretability, societal-impacts).
blog_indexList posts on https://www.claude.com/blog. Returns title + url for each post discovered on the index page.
blog_fetchFetch a specific Claude blog post. Accepts a full https://www.claude.com/blog/<slug> URL or the slug alone. Mirror-first; falls back to live HTTP.
blog_searchText-match the Claude blog index titles. Case-insensitive substring search.
code_mode_batchExecute multiple KG operations in a single round-trip. Steps run in order; each result is appended to the output array. Supported tools: kg_read_graph, kg_search_nodes, kg_open_nodes.
comms_notify_outcomePost a mailbox_outcome summary (achieved or blocked) to the configured Slack channel.
comms_notify_blockedPost a blocked status with evidence to the configured Slack channel.
comms_postPost a generic message to the configured Slack channel.
comms_read_feedbackRead recent messages from the configured Slack channel (operator feedback injection).
kg_graphql_queryExecute a GraphQL-style query against the KE knowledge graph. Supported: { entities }, { searchNodes(query: "X") }, { node(name: "X") }, { graph }.
kg_create_entitiesCreate one or more typed knowledge-graph entities. Idempotent: duplicate names are skipped.
kg_create_relationsCreate directed relations between named entities. Idempotent: duplicate from|relation|to triples are skipped.
kg_add_observationsAppend observations to an existing entity.
kg_delete_entitiesDelete entities by name. Also removes all relations that touch the deleted entities.
kg_delete_relationsDelete specific directed relations.
kg_read_graphReturn the full knowledge graph (all entities and relations).
kg_search_nodesFull-text search across entity names, types, and observations. Returns matching entities.
kg_open_nodesRetrieve specific entities by name plus all relations that touch them.
llms_namespacesList the curated set of llms.txt namespaces this bridge knows about.
llms_fetchFetch one llms.txt namespace and return its raw text. `id` is one of the values returned by `llms_namespaces` (e.g. 'code.claude.com/docs').
llms_grepCase-insensitive line-grep across every known llms.txt namespace. Mirror-first per namespace (no HTTP if the body is in vendor/<name>/llms.txt mirror) — Phase 4 speed win. Returns each hit with its source URL.
mailbox_peekList pending messages without consuming. Returns up to limit messages, does not mutate state.
mailbox_threadReturn all messages in a thread_id, across all agents. Scans all JSONL under MAILBOX_DIR.
mailbox_outcomeShorthand: send an OutcomePayload (type=outcome, ack_required=false). Designed for agent→orchestrator reporting.
mailbox_task_syncSync a TaskPayload to the shared task ledger (_task_ledger.jsonl). Upserts by task_id. Notifies assignee if set.
send_mailSend version-controlled mail to another agent (or 'broadcast'). Writes mail/<to>/inbox/<id>.json in the repository; commit it with your current todo so the recipient's next session sees it. Returns the delivered mail including its id.
receive_mailRead your unread repo mail (own inbox + broadcast). By default marks own-inbox mail read by moving it to mail/<agent>/read/ — commit that move so other sessions see the state. Broadcast mail is never moved.
mail_threadFull version-controlled mail thread (inbox + read + broadcast) for an agent, oldest first.
project_git_statusReport git working-tree status as structured JSON. Replaces Bash(`git status --porcelain`) at roughly half the token cost. Use to detect drift before committing or pushing.
project_find_filesWalk the project tree (skipping node_modules, .git, dist, .terraform, coverage, .cache, .next) and return files matching an optional substring pattern + optional size constraints. Replaces Bash(`find ...`) + `stat` chains at no shell-spawn cost.
project_git_logList recent commits as structured JSON (sha, subject, author, timestamp). Replaces Bash(`git log --pretty=...`) at roughly a third the token cost. `since` accepts any git revspec ('HEAD~10', 'origin/main..HEAD', '2026-05-01').
support_collectionsList the curated set of support.claude.com collection slugs we recognize. Each entry is the slug used by the bridge tools.
support_collectionFetch a collection page and return the article links it lists. `slug` is e.g. '14445694-claude-code'.
support_articleFetch a specific support article. Accepts a full https://support.claude.com/en/articles/<id-slug> URL or the bare '<id>-<slug>' fragment. Mirror-first; allowlist-enforced HTTP fallback (rejects URLs outside support.claude.com/en/articles/).
support_searchText-match support.claude.com article titles against the local mirror manifest. Returns URL + slug-derived title for each hit, no HTTP required. Sourced from vendor/claude-sitemap/urls.md (341 EN articles under support/en/articles/).
telemetry_session_listList agent session cost records from the COSTS_JSONL file. Returns sessions with token counts, cache efficiency, and cost.
telemetry_cost_queryQuery Prometheus for claude_code.cost.usage metrics. Returns time-series data scoped to the org.
telemetry_cache_efficiencyCompute prompt-cache efficiency metrics for one or all sessions. Parity with Console /usage/cache hit rate view.
telemetry_record_costAppend an agent session cost record to COSTS_JSONL and emit OTel metrics. Use after each agent SDK session.
usage_cost_dailyusage_sessionsusage_requestsvendor_listList the vendors mirrored under vendor/. Each entry includes the discovered llms.txt URL, last crawl timestamp, and the count of URLs in the runtime allowlist.
vendor_fetchFetch a vendor doc by URL. Returns local mirror body when available (source:'mirror'); otherwise falls back to live HTTP (source:'http'). The URL must be in some vendor's allowlist (see vendor_list).
vendor_grepCase-insensitive line-grep across the local vendor mirror. Optionally restrict to one vendor. Returns each hit with the vendor, original URL, mirror-relative path, line number, and the matching line.
kg_get_nodeFetch a single knowledge-graph node by its entity_id with full content and all observations. Returns null if not found.
vendor_searchFull-text search over crawled vendor documentation pages. Returns vendor, path, and the first 500 chars of content ranked by relevance. Use vendor to scope to a specific namespace (e.g. 'cloudflare', 'anthropics').
read_doc_contentsedit_documentprocessDisclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
hono: CORS Middleware reflects any Origin with credentials when `origin` defaults to the wildcard
ws: Memory exhaustion DoS from tiny fragments and data chunks
Hono: Algorithmic Complexity DoS in Language Middleware
Hono: Proxy Helper does not remove response headers listed in the `Connection` header
Hono: ReDoS in CORS middleware via Access-Control-Request-Headers
A2A_PORTANTHROPIC_ADMIN_API_KEYCLAUDE_CODE_ENABLE_TELEMETRYCOSTS_JSONLDATA_DIRDISCORD_ACCESS_MODEDISCORD_BOT_TOKENDISCORD_STATE_DIRE2M_MAILBOX_DIRE2M_QUEUE_DIRFAKECHAT_PORTIMESSAGE_ACCESS_MODEIMESSAGE_ALLOW_SMSIMESSAGE_APPEND_SIGNATUREIMESSAGE_DB_PATHIMESSAGE_STATE_DIRKE_SERVERS_DIRKG_STORE_PATHMAILBOX_BACKENDMAILBOX_DIRMIRROR_DIRORGANIZATION_IDOTEL_LOGS_EXPORTEROTEL_METRICS_EXPORTEROTEL_QUERY_BASE_URLOTEL_RESOURCE_ATTRIBUTESPGHOSTPROMETHEUS_URLREPO_MAIL_ROOTSLACK_BOT_TOKENSLACK_CHANNEL_IDTAILSCALE_API_KEYTAILSCALE_TAILNETTASK_LEDGER_JSONLTELEGRAM_ACCESS_MODETELEGRAM_BOT_TOKENTELEGRAM_STATE_DIRKG_MCP_PORTKG_AUTO_MIGRATEKG_API_PORTKG_DEVCLAUDE_PLUGIN_ROOTOLLAMA_MODELOLLAMA_TEST_TIMEOUTOLLAMA_TAILSCALE_IPAUDIT_REPORTOLLAMA_PORTOLLAMA_PING_TIMEOUTOLLAMA_HOST_OVERRIDEOLLAMA_TEST_PROMPTTRACE_FILESECURITY_WARNINGS_STATE_DIRCLAUDE_CONFIG_DIRSECURITY_GUIDANCE_DEBUG_LOGPREVIOUS_FINDINGS_TTL_SECANTHROPIC_AUTH_TOKENSECURITY_REVIEW_MODELANTHROPIC_BASE_URLCLAUDE_CODE_REMOTESG_AGENTIC_CLI_PATHSG_DUAL_ORSECRET_KEYSG_AGENTIC_COMMIT_REVIEWSG_AGENTIC_MODELSG_AGENTIC_MAX_TURNSSG_AGENTIC_CONTEXT_DIRCLAUDE_CODE_EXECPATHSG_AGENTIC_DEBUG_DIRSG_AGENTIC_ITER2SG_AGENTIC_DIFF_INTERSECTSG_AGENTIC_FILTERSG_AGENTIC_NO_ADJUDICATESG_AGENTIC_EXCLUDE_MEDIUMDIFF_PER_FILE_BYTESDIFF_TOTAL_BYTESENABLE_CODE_SECURITY_REVIEWENABLE_PATTERN_RULESENABLE_COMMIT_REVIEWENABLE_STOP_REVIEWSECURITY_GUIDANCE_DISABLEENABLE_SECURITY_REMINDERMAX_STOP_HOOK_FIRINGSMAX_DIFF_FILESMAX_COMMIT_REVIEWS_PER_HOURMAX_COMMIT_REVIEWS_PER_SESSIONCOMMIT_REVIEW_RATE_WINDOW_SSG_PUSH_SWEEP_MAX_FILESSG_PUSH_SWEEP_MAX_RANGESG_PUSH_SWEEP_REPORT_CAPSG_PUSH_SWEEPSECURITY_GUIDANCE_COMMIT_REVIEWSG_AGENTIC_NO_RACESG_AGENTIC_RACE_DELAY_SCLAUDE_PROJECT_DIRCLAUDE_CODE_REMOTE_SESSION_IDCLOUDFLARE_API_TOKENMANAGED_AGENT_SESSION_IDIS_SANDBOXCOWORK_SESSIONEVAL_MODELDATABASE_URLREDIS_URLPORTTool annotations
3/122 tools have annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
122/122 tools missing one or more hints — envelope_write (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); envelope_read (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); task_transition (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +119 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.
Descriptions match behaviour
6 tools describe read intent but their handlers mutate — mailbox_ack (line 66: appendFileSync(p, JSON.stringify(obj) + "\n")); engineering_search (line 35: anchorRe.exec(html)); blog_search (line 29: anchorRe.exec(html))
Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.
Tool inputs are validated
87/104 tool handlers declare input schemas (84%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tool test coverage
Only 30/122 tools referenced in tests (25%)
Write tests that reference each tool by name so every tool has at least one test.
Shell command execution
13 child_process/subprocess calls in production code — runs shell commands (cowork/plugins/imessage/server.ts:460, cowork/plugins/imessage/server.ts:470, cowork/plugins/imessage/server.ts:831)
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
Secrets not written to files
1 secret value written to files
Avoid persisting secrets to disk. Keep them in memory or your secret manager.
Secrets not logged
11 secret values sent to console.log
Redact or omit secret values from log output.
Production dependencies are patched
0 critical, 2 high severity in production deps — hono@4.12.23 (high), ws@8.20.1 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dependency freshness
2/32 production deps stale: wink-bm25-text-search@2022-11-21 (3.7y), @xenova/transformers@2024-05-29 (2.2y)
Tool description accuracy
6 tools have description/behavior mismatches: mailbox_ack: description implies read-only but handler writes/deletes/executes; engineering_search: description implies read-only but handler writes/deletes/executes; blog_search: description implies read-only but handler writes/deletes/executes
Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.
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/subagentceo/knowledge-engineering)?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