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.

F
Warning
30/100

knowledge-engineering

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

⚡ Live Monitored: not connected

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

Is this your MCP?

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.

// key findings
🚨
Secret credentials may flow to a network call
11 flows detected: TAILSCALE_API_KEY, TELEGRAM_BOT_TOKEN, SLACK_BOT_TOKEN. We can’t prove the destination matches the brand the credential belongs to.
⚠️
Tool descriptions don’t match what handlers do
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))
⚠️
Known vulnerabilities in dependencies: 2 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 8 credentials: ANTHROPIC_ADMIN_API_KEY, DISCORD_BOT_TOKEN, SLACK_BOT_TOKEN, TAILSCALE_API_KEY, TELEGRAM_BOT_TOKEN, ANTHROPIC_AUTH_TOKEN, SECRET_KEY, CLOUDFLARE_API_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes91 tools

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_write

Validate and append a DurableTask envelope to its domain JSONL queue.

envelope_read

Read current task state from a domain JSONL queue (latest-line-wins per id).

task_transition

Append a state transition for a task. Validates the transition is legal.

mailbox_send

Send a typed message from one agent to another (or broadcast). Appended to recipient's JSONL.

mailbox_recv

Read unacked messages for an agent from its mailbox JSONL.

mailbox_ack

Ack a message — appends an ack row to the mailbox JSONL.

queue_status

Summary counts (pending/in_progress/blocked/completed/failed) for all domain queues.

lint_claude_action_workflow

Lint 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_devices

List all devices in the Tailscale network with their hostnames, IPs, OS, and last-seen time.

tailscale_ping

Look up a Tailscale device by hostname fragment and return its full record (IPs, OS, last seen). Does not send ICMP — uses API lookup.

tailscale_routes

List subnet routes advertised on this tailnet, including their enabled/advertised state.

tailscale_acl

Fetch the current ACL policy for the tailnet. Returns the Tailscale HuJSON ACL document.

create_task

Create a durable task via pg_durable

get_task

Retrieve a task by id — L1 → L2 → pg_durable

complete_task

Mark a pg_durable task as completed and evict from cache

list_tasks

List pending tasks from a pg_durable queue

list_collections

List the support collections in the local mirror (id-slug + title).

list_articles

List article .md files in a collection (by its id-slug).

read_article

Read one article's markdown by collection id-slug + filename.

agent_directory

The 15-agent registry (5 functions x 3 tiers) + the named teams.

team_dispatch

Fan one Envelope out to every member of a named team (the cowork coordination primitive).

reply

Reply 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.

react

Add an emoji reaction to a Discord message. Unicode emoji work directly; custom emoji need the <:name:id> form.

edit_message

Edit 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_attachment

Download 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_messages

Fetch 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_messages

Fetch 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_tools

Progressive-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_downloads

Download counts for a package over a window (last-day | last-week | last-month). Source: https://api.npmjs.org/downloads/point/{period}/{package}.

npm_org_packages

List all packages owned by an npm organization. Returns name + role per package. Source: https://www.npmjs.com/org/{org}/package.

npm_package_metadata

Fetch a package document from the npm registry: versions, dist-tags, maintainers, latest manifest. Source: https://registry.npmjs.org/{package}.

npm_search

Full-text search the npm registry. Returns up to `size` results with name, description, and score. Source: https://registry.npmjs.org/-/v1/search.

engineering_index

List posts on https://www.anthropic.com/engineering. Returns title + url for each post discovered on the index page.

engineering_fetch

Fetch 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_search

Text-match the engineering index titles. Case-insensitive substring search; returns the matching entries.

vendor_cache_stats

Tiered 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_search

Search 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_get

Fetch 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_year

Publication-year histogram over the citation corpus (only items with a parsed issued date).

memory_read

Read 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_write

Write 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_team

Citations attributed to an Anthropic research team page (economic-research, alignment, interpretability, societal-impacts).

blog_index

List posts on https://www.claude.com/blog. Returns title + url for each post discovered on the index page.

blog_fetch

Fetch 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_search

Text-match the Claude blog index titles. Case-insensitive substring search.

code_mode_batch

Execute 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_outcome

Post a mailbox_outcome summary (achieved or blocked) to the configured Slack channel.

comms_notify_blocked

Post a blocked status with evidence to the configured Slack channel.

comms_post

Post a generic message to the configured Slack channel.

comms_read_feedback

Read recent messages from the configured Slack channel (operator feedback injection).

kg_graphql_query

Execute a GraphQL-style query against the KE knowledge graph. Supported: { entities }, { searchNodes(query: "X") }, { node(name: "X") }, { graph }.

kg_create_entities

Create one or more typed knowledge-graph entities. Idempotent: duplicate names are skipped.

kg_create_relations

Create directed relations between named entities. Idempotent: duplicate from|relation|to triples are skipped.

kg_add_observations

Append observations to an existing entity.

kg_delete_entities

Delete entities by name. Also removes all relations that touch the deleted entities.

kg_delete_relations

Delete specific directed relations.

kg_read_graph

Return the full knowledge graph (all entities and relations).

kg_search_nodes

Full-text search across entity names, types, and observations. Returns matching entities.

kg_open_nodes

Retrieve specific entities by name plus all relations that touch them.

llms_namespaces

List the curated set of llms.txt namespaces this bridge knows about.

llms_fetch

Fetch 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_grep

Case-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_peek

List pending messages without consuming. Returns up to limit messages, does not mutate state.

mailbox_thread

Return all messages in a thread_id, across all agents. Scans all JSONL under MAILBOX_DIR.

mailbox_outcome

Shorthand: send an OutcomePayload (type=outcome, ack_required=false). Designed for agent→orchestrator reporting.

mailbox_task_sync

Sync a TaskPayload to the shared task ledger (_task_ledger.jsonl). Upserts by task_id. Notifies assignee if set.

send_mail

Send 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_mail

Read 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_thread

Full version-controlled mail thread (inbox + read + broadcast) for an agent, oldest first.

project_git_status

Report 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_files

Walk 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_log

List 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_collections

List the curated set of support.claude.com collection slugs we recognize. Each entry is the slug used by the bridge tools.

support_collection

Fetch a collection page and return the article links it lists. `slug` is e.g. '14445694-claude-code'.

support_article

Fetch 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_search

Text-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_list

List agent session cost records from the COSTS_JSONL file. Returns sessions with token counts, cache efficiency, and cost.

telemetry_cost_query

Query Prometheus for claude_code.cost.usage metrics. Returns time-series data scoped to the org.

telemetry_cache_efficiency

Compute prompt-cache efficiency metrics for one or all sessions. Parity with Console /usage/cache hit rate view.

telemetry_record_cost

Append an agent session cost record to COSTS_JSONL and emit OTel metrics. Use after each agent SDK session.

usage_cost_daily
usage_sessions
usage_requests
vendor_list

List 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_fetch

Fetch 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_grep

Case-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_node

Fetch a single knowledge-graph node by its entity_id with full content and all observations. Returns null if not found.

vendor_search

Full-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_contents
edit_document
process
// known CVEs in dependencies2 high11 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

highhono@4.12.23GHSA-88fw-hqm2-52qc

hono: CORS Middleware reflects any Origin with credentials when `origin` defaults to the wildcard

highws@8.20.1GHSA-96hv-2xvq-fx4p

ws: Memory exhaustion DoS from tiny fragments and data chunks

lowhono@4.12.23GHSA-54fx-42gc-7vw4

Hono: Algorithmic Complexity DoS in Language Middleware

lowhono@4.12.23GHSA-79qm-7rj5-m7r9

Hono: Proxy Helper does not remove response headers listed in the `Connection` header

lowhono@4.12.23GHSA-8j4g-w8fx-2239

Hono: ReDoS in CORS middleware via Access-Control-Request-Headers

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configA2A_PORT
🔐 secretANTHROPIC_ADMIN_API_KEY
configCLAUDE_CODE_ENABLE_TELEMETRY
configCOSTS_JSONL
configDATA_DIR
configDISCORD_ACCESS_MODE
🔐 secretDISCORD_BOT_TOKEN
configDISCORD_STATE_DIR
configE2M_MAILBOX_DIR
configE2M_QUEUE_DIR
configFAKECHAT_PORT
configIMESSAGE_ACCESS_MODE
configIMESSAGE_ALLOW_SMS
configIMESSAGE_APPEND_SIGNATURE
configIMESSAGE_DB_PATH
configIMESSAGE_STATE_DIR
configKE_SERVERS_DIR
configKG_STORE_PATH
configMAILBOX_BACKEND
configMAILBOX_DIR
configMIRROR_DIR
configORGANIZATION_ID
configOTEL_LOGS_EXPORTER
configOTEL_METRICS_EXPORTER
configOTEL_QUERY_BASE_URL
configOTEL_RESOURCE_ATTRIBUTES
configPGHOST
configPROMETHEUS_URL
configREPO_MAIL_ROOT
🔐 secretSLACK_BOT_TOKEN
configSLACK_CHANNEL_ID
🔐 secretTAILSCALE_API_KEY
configTAILSCALE_TAILNET
configTASK_LEDGER_JSONL
configTELEGRAM_ACCESS_MODE
🔐 secretTELEGRAM_BOT_TOKEN
configTELEGRAM_STATE_DIR
configKG_MCP_PORT
configKG_AUTO_MIGRATE
configKG_API_PORT
configKG_DEV
configCLAUDE_PLUGIN_ROOT
configOLLAMA_MODEL
configOLLAMA_TEST_TIMEOUT
configOLLAMA_TAILSCALE_IP
configAUDIT_REPORT
configOLLAMA_PORT
configOLLAMA_PING_TIMEOUT
configOLLAMA_HOST_OVERRIDE
configOLLAMA_TEST_PROMPT
configTRACE_FILE
configSECURITY_WARNINGS_STATE_DIR
configCLAUDE_CONFIG_DIR
configSECURITY_GUIDANCE_DEBUG_LOG
configPREVIOUS_FINDINGS_TTL_SEC
🔐 secretANTHROPIC_AUTH_TOKEN
configSECURITY_REVIEW_MODEL
configANTHROPIC_BASE_URL
configCLAUDE_CODE_REMOTE
configSG_AGENTIC_CLI_PATH
configSG_DUAL_OR
🔐 secretSECRET_KEY
configSG_AGENTIC_COMMIT_REVIEW
configSG_AGENTIC_MODEL
configSG_AGENTIC_MAX_TURNS
configSG_AGENTIC_CONTEXT_DIR
configCLAUDE_CODE_EXECPATH
configSG_AGENTIC_DEBUG_DIR
configSG_AGENTIC_ITER2
configSG_AGENTIC_DIFF_INTERSECT
configSG_AGENTIC_FILTER
configSG_AGENTIC_NO_ADJUDICATE
configSG_AGENTIC_EXCLUDE_MEDIUM
configDIFF_PER_FILE_BYTES
configDIFF_TOTAL_BYTES
configENABLE_CODE_SECURITY_REVIEW
configENABLE_PATTERN_RULES
configENABLE_COMMIT_REVIEW
configENABLE_STOP_REVIEW
configSECURITY_GUIDANCE_DISABLE
configENABLE_SECURITY_REMINDER
configMAX_STOP_HOOK_FIRINGS
configMAX_DIFF_FILES
configMAX_COMMIT_REVIEWS_PER_HOUR
configMAX_COMMIT_REVIEWS_PER_SESSION
configCOMMIT_REVIEW_RATE_WINDOW_S
configSG_PUSH_SWEEP_MAX_FILES
configSG_PUSH_SWEEP_MAX_RANGE
configSG_PUSH_SWEEP_REPORT_CAP
configSG_PUSH_SWEEP
configSECURITY_GUIDANCE_COMMIT_REVIEW
configSG_AGENTIC_NO_RACE
configSG_AGENTIC_RACE_DELAY_S
configCLAUDE_PROJECT_DIR
configCLAUDE_CODE_REMOTE_SESSION_ID
🔐 secretCLOUDFLARE_API_TOKEN
configMANAGED_AGENT_SESSION_ID
configIS_SANDBOX
configCOWORK_SESSION
configEVAL_MODEL
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployDATABASE_URL
deployREDIS_URL
deployPORT
// quality suggestions

Tool 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.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 10 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/subagentceo/knowledge-engineering?variant=verified)](https://m8ven.ai/mcp/subagentceo/knowledge-engineering)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: db7be8bd61987734ed7fd9ff44c35a7320fb284b
code hash: 1b6853f745b6f8bc68e1718dfe20f36645886f26f36c11321ed0b04b70735eaa
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

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
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client