claude-gateway (0xMaxMa/claude-gateway) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 83 tools. No publisher has claimed this listing.
Turn Claude Code into a voice-enabled, multi-channel assistant that runs tasks in parallel
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
0xMaxMa
Source: github_repo_search
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.
replyReply on Telegram. Pass chat_id from the inbound message. Optionally pass reply_to (message_id) for threading, and files (absolute paths) to attach images or documents.
reactAdd an emoji reaction to a Telegram message. Telegram only accepts a fixed whitelist (👍 👎 ❤ 🔥 👀 🎉 etc) — non-whitelisted emoji will be rejected.
download_attachmentDownload a file attachment from a Telegram message to the local inbox. Use when the inbound <channel> meta shows attachment_file_id. Returns the local file path ready to Read. Telegram caps bot downloads at 20MB.
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.
agent_createCreate a new Claude Gateway agent with a workspace and channel configuration. The gateway hot-adds the agent without requiring a restart.
agent_updateUpdate an existing agent: add a new channel, remove a channel, or update a workspace file.
api_replybrowse_registryBrowse the community app registry. Omit name to list all apps; provide name to get versions for a specific app.
install_appInstall an app from the registry or a GitHub URL. Returns a jobId to poll with poll_install_job.
poll_install_jobPoll the status of an app install job. Returns status (pending/running/completed/failed), logs, and result on completion.
inspect_appPreview an install source WITHOUT installing: fetch and parse the app.yaml and return the required secrets (secretKeys, must be provided) and auto-generated secrets (generatedKeys, filled by the gateway), plus name, version, ports, and warnings. Also returns secretDefaults — defaults for prompt-with…
list_appsList all installed apps with their status and proxy URLs.
app_statusGet detailed status and version info for an installed app.
update_appUpdate an installed app. Registry apps update to their latest published version; GitHub-URL (custom) apps update to their repo default-branch HEAD. Returns a jobId.
uninstall_appUninstall an app — stops containers, removes images, deletes files.
start_stop_appStart, stop, or restart an installed app.
docker_housekeepingReclaim leaked Docker build cache and dangling images left behind by app install/update. mode "report" (default) returns a read-only reclaim report: reclaimable build cache, dangling image count, and orphan volume names. mode "prune" executes ONLY the safe reclaim (build cache older than the configu…
backup_appBack up an installed app — a permission-safe snapshot of its Docker named volumes, bind-mount data directories under the app dir, and config (.env/app.yaml) into a single archive. The app is briefly stopped for a consistent snapshot and restarted afterward. Returns a jobId; poll with poll_install_jo…
restore_appRestore an app's Docker named volumes, bind-mount data directories under the app dir, and config from a prior backup, then start it on the restored data. Restoring a backup from a different app version is allowed but may warn about schema/migration mismatch. Returns a jobId; poll with poll_install_j…
list_backupsList an app's backups, newest first: each entry has id, createdAt, sizeBytes, and appVersion. Use the id with restore_app.
browser_create_sessionCreate or resume GetPod Cloud Browser, NOT the user Chrome or Remote Browser connector. Use only when Cloud Browser is selected, or no Remote Browser is connected for a generic browser request. Returns session status.
browser_close_sessionClose a browser session, killing the process and removing session data.
browser_get_stream_urlGet the WebSocket stream URL for an active session (for frontend live view).
browser_navigateNavigate to a URL. If tab_id is provided, navigates that specific tab; otherwise navigates the active tab.
browser_snapshotReturn the accessibility tree of the current page.
browser_clickClick an element by accessibility ref or CSS selector.
browser_fillFill an input element with a value.
browser_typeType text into the currently focused element.
browser_evaluateEvaluate JavaScript in the browser and return the result.
browser_scrollScroll the page at (x, y) by (deltaX, deltaY).
browser_waitWait for a condition: element selector, networkidle, or URL pattern.
browser_get_textGet text content of an element matching the selector.
browser_new_tabOpen a new browser tab, optionally navigating to a URL. Returns tab_id.
browser_close_tabClose a browser tab by tab_id.
browser_tabsList all open browser tabs.
browser_screenshotCapture the current viewport as JPEG. Returns the absolute file path of the saved image (ready to attach to Telegram).
browser_navigate_tabNavigate a specific tab (by tab_id) to a URL.
cron_listList scheduled cron jobs for this agent
cron_createCreate a new cron job
cron_deleteDelete a cron job by ID
cron_updateUpdate an existing cron job. Provide job_id plus only the fields to change.
cron_runRun a cron job immediately
cron_get_runsGet run history for a cron job
discord_replySend a message to a Discord channel, thread, or DM. Pass channel_id from the inbound message. Optionally pass reply_to (message_id) and files (absolute paths).
discord_reactAdd an emoji reaction to a Discord message.
discord_edit_messageEdit a message the bot previously sent.
discord_download_attachmentDownload a file from a Discord CDN URL to the local inbox.
discord_create_threadCreate a public thread in a Discord channel.
generate_imageline_replyline_imagememory_searchSearch your long-term memory archive (past notes under memory/, plus MEMORY.md/USER.md) by keyword and get the most relevant snippets with their file + line range. Use this to recall details that are NOT in the memory currently loaded into your context — the archive holds far more than fits in the p…
memory_getRead an exact line range from one of your memory files (a path returned by memory_search, e.g. "memory/foo.md", or "MEMORY.md"/"USER.md"). Use after memory_search to pull the full context around a snippet. Read-only.
memory_shared_createCreate a NEW note in the shared, cross-agent knowledge base RIGHT NOW, instead of waiting for the nightly automatic promotion. This is an explicit, agent-initiated write (works even when shared-KB mode is "propose"). Notes live in a shared namespace across every agent — pick any "name" you like, the…
memory_shared_getRead the full current content of one shared-KB note by its exact "name" (see memory_shared_create). Use this before memory_shared_update so your edit is based on what is actually there — memory_search only returns short snippets, not the full note.
memory_shared_updatememory_shared_deleteDelete one shared-KB note by its exact "name" (see memory_shared_create). Any agent can delete any note in the shared vault — there is no per-agent ownership. This cannot delete notes the nightly dreaming pipeline promoted (different naming scheme).
share_fileskill_createCreate a new skill from content. The skill will be available immediately via hot-reload.
skill_deleteDelete a skill by name.
skill_installInstall a skill from a GitHub URL or raw URL pointing to a SKILL.md file.
skill_metricsRead the skill self-improvement effectiveness rollup for this agent: adoption funnel (auto-skill stickiness), cost-to-complete deltas, recovery-rate trend, enabled/disabled cohort, and the net-token ledger (tokens saved by reuse minus tokens spent reviewing). Read-only.
slack_replycapabilities_listDiscover all capabilities this agent can offer: installed/shared/native skills, gateway MCP tools and enabled connector/plugin MCP tools, including tools executed only by workers. Read metadata only; never executes a tool or grants permissions. Use query to find relevant tools before assigning work.…
conversation_intakePrepare executable work, incomplete materials, or an amendment to an existing task. Do not call this for greetings, introductions, casual conversation or questions you can answer directly; answer those normally once. When semantic intake is enabled, acknowledge before work mutations. Incomplete mate…
task_spawnDurably queue a task for an independent worker. Returns after commit without waiting for worker startup or completion.
task_statusRead the task index in this conversation without waiting. Pass task_id to retrieve the complete stored result and evidence before discussing an earlier task. An index entry is not a partial worker report.
task_cancelRequest cancellation, including needs_reconciliation cleanup. cancel_requested is not proof of termination. Existing files are retained. Set replaced_by_task_id only for a known replacement task, never infer from similar titles.
task_updateAccept a revised task instruction. applied_revision changes only when the worker accepts it.
task_questionManage pending questions without answering or resuming work. Ask stages one natural separate message after your reply; discuss marks ongoing consultation; defer/mute/resume persist the user reminder preference.
task_answerAnswer the matching pending question on a task.
task_memory_appendAppend an explicitly requested memory note for a channel task. API tasks cannot write memory. Files are restricted to MEMORY.md, USER.md, or memory/<name>.md. Retains existing content and deduplicates retries.
task_stage_fileStage a finished image or document for the user. The orchestration attaches it to the next completed agent response after this task succeeds, using the original destination. This tool does not send to a channel. Call once per output file. For an image returned by an MCP tool (such as a remote browse…
task_report_progressReport factual progress internally. At phase changes include a checkpoint with phase, evidenceVersion, checks, findings and nextAction. This does not send a user message.
task_request_inputAsk the user for information required by your task, then end this turn immediately.
telegram_replyReply on Telegram. Pass chat_id from the inbound message. Optionally pass reply_to (message_id) for threading, and files (absolute paths) to attach images or documents.
telegram_reactAdd an emoji reaction to a Telegram message. Telegram only accepts a fixed whitelist (👍 👎 ❤ 🔥 👀 🎉 etc) — non-whitelisted emoji will be rejected.
telegram_download_attachmentDownload a file attachment from a Telegram message to the local inbox. Use when the inbound <channel> meta shows attachment_file_id. Returns the local file path ready to Read. Telegram caps bot downloads at 20MB.
telegram_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.
generate_videowechat_replywhatsapp_replywhatsapp_cloud_replyDisclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
Zod denial of service vulnerability
GATEWAY_CAPABILITY_CATALOGGATEWAY_ORCHESTRATION_MEDIAGATEWAY_ORCHESTRATION_ROLEGATEWAY_ORCHESTRATION_TICKET_FILEGATEWAY_ORCHESTRATION_WRITE_MEMORYGATEWAY_ORIGIN_CHANNELGATEWAY_SEMANTIC_INTAKETool 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
83/83 tools missing one or more hints — reply (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); react (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); download_attachment (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +80 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.
License file
No license file
Add a LICENSE file (MIT, Apache-2.0, etc.).
Tool test coverage
Only 5/83 tools referenced in tests (6%)
Write tests that reference each tool by name so every tool has at least one test.
Production dependencies are patched
0 critical, 1 high severity in production deps — @modelcontextprotocol/sdk@1.0.0 (high), zod@3.22.0 (low)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
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/0xmaxma/claude-gateway)?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