bot-relay-mcp (Maxlumiere/bot-relay-mcp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 38 tools. No publisher has claimed this listing.

C
Emerging
74/100

bot-relay-mcp

MCP coordination primitive for multi-agent workflows. Lets multiple AI coding agents (Claude Code, Cursor, n8n, custom clients) discover each other and exchange messages and tasks via a shared SQLite-backed message bus.

Emerging. No concerning findings. Grades remain capped until the project builds reputation through adoption. 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

Maxlumiere

Source: Glama

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
1 flow detected: RELAY_AGENT_TOKEN. We can’t prove the destination matches the brand the credential belongs to.
🔐
You'll be asked for 5 credentials: RELAY_AGENT_TOKEN, RELAY_DASHBOARD_PUSH_SECRET, RELAY_DASHBOARD_SECRET, RELAY_ENCRYPTION_KEY, RELAY_HTTP_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// 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.
configRELAY_AGENT_NAME
🔐 secretRELAY_AGENT_TOKENClose a terminal, lose , and the relay rejects your register_agent with AUTH_FAILED because the row is intact. Clear the registration so the agent can re-bootstrap:
configRELAY_ALLOW_LEGACY
configRELAY_ALLOW_PRIVATE_WEBHOOKS
configRELAY_AUDIT_LOG_PURGE_INTERVAL
configRELAY_AUDIT_LOG_RETENTION_DAYS
configRELAY_AUTH_CACHE_TTL_MS
configRELAY_AUTO_ASSIGN_LIMIT
configRELAY_BUSY_TTL_MINUTES
configRELAY_CLAUDE_HOME
configRELAY_CONFIG_PATH
configRELAY_CONSISTENCY_PROBE
configRELAY_CONSISTENCY_PROBE_RATE
configRELAY_DASHBOARD_OPERATOR
configRELAY_DASHBOARD_PUSH_INTERVAL_MS
🔐 secretRELAY_DASHBOARD_PUSH_SECRET
configRELAY_DASHBOARD_PUSH_URL
🔐 secretRELAY_DASHBOARD_SECRETOn a shared machine, or any non-loopback / team / remote setup, gate it: run relay init --secret <strong-random> (or export ). The daemon requires a secret to bind to any non-loopback host.
configRELAY_DB_PATH
🔐 secretRELAY_ENCRYPTION_KEYHub operator can read plaintext messages in RAM (even with set, decryption happens server-side for routing)
configRELAY_ENCRYPTION_KEYRING
configRELAY_ENCRYPTION_KEYRING_PATH
configRELAY_ENCRYPTION_LEGACY_KEY_ID
configRELAY_FILESYSTEM_MARKERS
configRELAY_HEALTH_PROBE_TIMEOUT_MS
configRELAY_HEALTH_REASSIGN_GRACE_MINUTES
configRELAY_HEALTH_SCAN_LIMIT
configRELAY_HOME
configRELAY_HTTP_BODY_LIMIT
configRELAY_HTTP_HOSTEnv vars override file config: RELAY_TRANSPORT, RELAY_HTTP_PORT, , RELAY_HTTP_SECRET, RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_HTTP_MAX_CONCURRENT_PER_IP
configRELAY_HTTP_MAX_SESSIONS
configRELAY_HTTP_PORTEnv vars override file config: RELAY_TRANSPORT, , RELAY_HTTP_HOST, RELAY_HTTP_SECRET, RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_HTTP_RATE_LIMIT_PER_MINUTE
configRELAY_HTTP_REAPER_INTERVAL_MS
configRELAY_HTTP_REAPER_TEST_MODE
🔐 secretRELAY_HTTP_SECRETEnv vars override file config: RELAY_TRANSPORT, RELAY_HTTP_PORT, RELAY_HTTP_HOST, , RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_HTTP_SECRET_PREVIOUS
configRELAY_HTTP_SESSION_IDLE_SECONDS
configRELAY_INSTANCE_ID
configRELAY_LAZY_REENCRYPT
configRELAY_LOG_LEVEL
configRELAY_MARKER_DIR
configRELAY_MAX_PAYLOAD_BYTES
configRELAY_ORPHAN_TTL_MINUTES
configRELAY_OUTBOX_POLL_MS
configRELAY_OUTBOX_RETENTION_DAYS
configRELAY_POSTED_ORPHAN_GRACE_SECONDS
configRELAY_RECORD_TRAFFIC
configRELAY_ROTATION_GRACE_SECONDS
configRELAY_SCHEMA_GATING
configRELAY_SQLITE_DRIVER
configRELAY_SSE_KEEPALIVE_MS
configRELAY_TERMINAL_APPDriver selection: override (allowlist-gated) > process.platform auto-detect > in-driver fallback chain.
configRELAY_TLS_ENABLED
configRELAY_TRANSPORTEnv vars override file config: , RELAY_HTTP_PORT, RELAY_HTTP_HOST, RELAY_HTTP_SECRET, RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_TRUSTED_PROXIESEnv vars override file config: RELAY_TRANSPORT, RELAY_HTTP_PORT, RELAY_HTTP_HOST, RELAY_HTTP_SECRET, (comma-separated CIDRs).
configRELAY_UNDELIVERED_GRACE_DAYS
configRELAY_WAKE_ANTI_FLAP_MARGIN_MS
configRELAY_WAKE_BOUND_MS
configRELAY_WAKE_COVERAGE_STATUS_PATH
configRELAY_WAKE_DETECTOR
configRELAY_WAKE_DETECTOR_INTERVAL_MS
configRELAY_WEBHOOK_CLAIM_LEASE_SECONDS
configRELAY_WEBHOOK_RETRY_BATCH_SIZE
configVITEST_CACHE_DIR
// quality suggestions

Tool 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

38/38 tools missing one or more hints — register_agent (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); discover_agents (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); unregister_agent (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +35 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.

Shell command execution

1 call in production code run through a shell (src/spawn/dispatcher.ts:44)

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.

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 4 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 Score](https://m8ven.ai/badge/mcp/maxlumiere/bot-relay-mcp)](https://m8ven.ai/mcp/maxlumiere/bot-relay-mcp)
Shows your grade and updates automatically. Prefer no grade? Append ?variant=verified to the badge URL.
commit: 6980f938c43332880a7295270bf0d34be9abbd6f
code hash: fae8da82d0ccf0f592d15c829fce1ba09de83fd736060865bca3e5cad9f7dc99
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