Atlas / MCP servers / nafeeur / MaskShift

MaskShiftBLOCK

mcp/nafeeur/maskshift

Maximalist harness

Verdict
BLOCK
Grade
F
Trust score
53 /100
Exposed tools
200 125r · 69w · 13d
Transport
streamable-http
License
GPL-3.0
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A general-purpose agent harness for any model, in one terminal application with no runtime dependencies. Give a model controlled access to your files, shell, browser, documents and services, and let it carry a task through to a verified result.

MaskShift connects a language model to the tools it needs to get real work done — reading and writing files, running commands, browsing the web, working with PDFs and notebooks, querying databases, calling MCP servers, remembering what matters and delegating to sub-agents — and keeps a person in control with checkpoints, an audit log and optional approvals.

It works for software engineering, but nothing about it is specific to code: summarize a folder of invoices into a spreadsheet, research a topic and write up the findings, reorganize files, run a recurring report. The model is a line of configuration; the tools are the same whichever one you use.

Highlights

  • Any model. Ollama, LM Studio, vLLM, OpenAI, Anthropic, Gemini, OpenRouter and any

OpenAI-compatible server. A model with no native tool API still gets the full tool surface through an in-prompt protocol. → providers

  • Adapts to the model. Each model gets a help level from
Read from source at commit e389ef952e8dOBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add maskshift --env BRAVE_API_KEY=${BRAVE_API_KEY} --env EXA_API_KEY=${EXA_API_KEY} --env TAVILY_API_KEY=${TAVILY_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "maskshift": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "BRAVE_API_KEY": "${BRAVE_API_KEY}",
        "EXA_API_KEY": "${EXA_API_KEY}",
        "TAVILY_API_KEY": "${TAVILY_API_KEY}"
      }
    }
  }
}
03

Exposed tools (200)

125 read · 69 write · 13 destructive. Blast radius: 13 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
agent_bridge_discoverreadDetect locally installed Claude Code, Codex, OpenCode, Copilot, Hermes, Aider, and configured coding-agent CLIs.
agent_bridge_helpreadRead the installed command help for an external coding-agent bridge before delegating.
agent_bridge_runwriteRun an installed Claude Code, Codex, OpenCode, Copilot, Hermes, Aider, or configured agent against the current workspace. Can wait or return a persistent process.
agent_cancelwriteCancel a running subagent or other active MaskShift run.
agent_dag_executewriteExecute the current dependency DAG in bounded parallel waves. Edit nodes default to isolated Git worktrees; failed dependencies block downstream work.
agent_delegatewriteRun a focused subagent with its own session and capability context. Optionally give it a named persona (see agent_persona_list) to frame its system prompt, and optionally isolate editing in a Git worktree and branch.
agent_parallelreadDelegate multiple independent research, review, test, or implementation tasks concurrently and aggregate their final results. Each task may set its own persona.
agent_persona_listreadList named personas (bundled and project-defined) that can be passed as agent_delegate\
agent_routereadRecommend an available external coding-agent bridge or internal subagent based on the task profile.
agent_run_statuswriteInspect active and recent agent runs, including parent/subagent relationships.
archive_createwriteCreate tar.gz, tar.zst, tar, or zip archives from arbitrary host paths.
archive_extractreadExtract zip, tar.gz, tar.zst, tar, and common compressed archives.
archive_listreadList the files inside a zip or tar archive without extracting it.
audit-fixturereadFixture skill used to check reference sandboxing.
automation_createwriteSchedule a recurring or one-time autonomous agent prompt, tool call, or unrestricted shell command. Schedules accept cron, ISO timestamps, or strings like every 15m.
automation_deletedestructivePermanently remove a scheduled automation.
automation_listwriteList scheduled agent, tool, and shell automations with next/last run state.
automation_pausewriteDisable an automation without deleting it.
automation_resumewriteEnable an automation and compute its next run.
automation_run_nowwriteImmediately execute an automation regardless of its next scheduled time.
automation_updatewriteEdit an automation schedule, action, name, metadata, or enabled state.
browser_accessibilityreadReturn the Chrome accessibility tree for semantic page understanding.
browser_clickreadClick a CSS selector or page coordinate through the Chrome input pipeline.
browser_closedestructiveTerminate a MaskShift browser instance and its CDP connections.
browser_close_tabreadClose one browser page target.
browser_consolereadRead recent console messages, exceptions, and browser log entries from the page.
browser_discoverreadDetect an installed Chromium, Chrome, or Edge executable for dependency-free CDP automation.
browser_evaluatewriteExecute arbitrary JavaScript in the active page and return a serializable value.
browser_instancesreadList browser processes launched by MaskShift.
browser_launchreadLaunch a persistent-profile Chromium browser with DevTools automation. Headless by default; visible mode supports interactive logins.
browser_navigatereadNavigate a browser tab and wait for the document to load.
browser_networkreadRead recent Chrome DevTools Network events for the page.
browser_new_tabwriteCreate a new browser tab at a URL.
browser_print_pdfreadRender the current browser page to a PDF artifact using Chrome print layout.
browser_screenshotreadCapture a viewport or full-page screenshot to a workspace artifact file.
browser_snapshotreadReturn page title, URL, visible text, and a selector map of interactive elements.
browser_tabsreadList all page targets in a browser instance.
browser_typewriteFocus an optional CSS selector, type text, and optionally submit with Enter.
browser_wait_forreadWait for a CSS selector to become visible, hidden, attached, or detached.
capability_activatewriteLoad selected capabilities into the current model context. Local tools add schemas, skills add instructions, and MCP servers connect lazily and expose their tools.
capability_searchreadSearch local tools, reusable skills, imported MCP servers, and discovered MCP tools. Use this whenever the current tool set is insufficient.
capability_statewriteShow the exact tools, skills, and MCP servers currently loaded for this run.
change_impactwriteWalk reverse imports and call relationships before an edit to identify affected symbols, modules, and likely tests.
checksum_verifyreadCompute a file\
chmod_setwriteChange a path\
code_graph_buildreadBuild a persistent repository graph of files, symbols, imports, containment, and likely calls for dependency-aware navigation.
code_graph_queryreadFind files and symbols in the persistent code graph, including incoming and outgoing relationship counts.
command_lookupreadFind whether one or more commands are installed and return their executable paths.
container_buildreadBuild a Docker/Podman image from a Dockerfile or Containerfile with build args and tags.
container_composewriteRun Docker Compose or Podman Compose actions such as up, down, build, logs, ps, and config.
container_enginereadDetect Docker or Podman and return version and runtime information.
container_execwriteExecute a command in an existing Docker/Podman container.
container_listreadList running or stopped Docker/Podman containers as structured records.
container_logsreadRead recent container logs with timestamps, tail, and since controls.
container_runwriteRun any Docker/Podman image with ports, volumes, environment, network, privilege, and detach controls.
container_stopdestructiveStop, kill, restart, pause, unpause, or remove a container.
context7readCurrent library and framework documentation with version-aware examples.
context_plan_explainreadBuild a dry context plan and report budgets, selected source files, retrieval reasons, and excluded stale memories.
database_cliwriteExecute a command through psql, mysql, redis-cli, mongosh, duckdb, or another installed database client.
dependency_scanreadInspect imports across selected source files and return a compact file-to-dependency graph without installing parsers.
disk_usagereadReport filesystem-level free/used space (df), or a per-directory usage breakdown (du) when a path is given.
echoreadEcho arguments
environment_listreadList process environment variable names and optionally values. MaskShift autonomous mode permits direct secret-bearing environment access.
environment_setdestructiveSet or delete environment variables for this running MaskShift daemon and future child processes.
external_agent_runwriteExecute any configured or ad-hoc coding-agent command with placeholder arguments such as {prompt}, {cwd}, and {workspace}.
fetch-mcpreadRetrieve and convert web content for language models.
file_diffreadShow a unified diff between two arbitrary paths (files or directories), independent of Git — for comparing anything on disk, not just a repo working tree.
file_hashreadCalculate SHA-256, SHA-512, SHA-1, or MD5 for a file without loading it all into model context.
filesystem-mcpreadStandard MCP filesystem server. MaskShift already has native host filesystem tools; use for compatibility tests.
fleet_askreadGive one member a task or question and wait for its reply. Its inbox is delivered with it. Any [[send]] messages it writes are queued for the teammates it addresses (use fleet_relay to have them acted on).
fleet_harnesseswriteList the agent harnesses a fleet member can run on (${HARNESS_HINT}) and whether each is installed.
fleet_listreadList the fleet members with their harness, role, status, unread mail and last reply. Pass name for one member\
fleet_messagesreadRead the recent messages passed between fleet members (optionally just those to or from one member).
fleet_relayreadHand a task to the fleet and let its members work it out together: the lead gets the task, members message each other with [[send]] blocks, and rounds continue until someone writes [[done]], everyone falls quiet, or the round/time limit is reached. Returns the outcome and a per-turn trace.
fleet_sendwriteQueue a message from one member (or you) to another, or to=
fleet_spawnwriteCreate a persistent, named fleet member backed by ${HARNESS_HINT}. Several members may share a harness. Members keep their history and inbox between turns and can message each other. Use isolated=true to give an editing member its own Git worktree.
fleet_stopwriteCancel a member\
fleet_suggestreadRank the installed agent harnesses (Claude Code, Codex, OpenCode, Hermes, ...) for a task by how each has actually done on similar tasks before, with the evidence behind the ranking.
fs_apply_patchwriteApply a unified diff using git apply. The patch can update multiple files and is checked before application.
fs_deletedestructiveDelete a file or directory recursively. Autonomous mode executes immediately without an approval prompt.
fs_listreadList a directory tree with file sizes and types. Paths may be workspace-relative or absolute in autonomous mode.
fs_mkdirwriteCreate a directory and missing parent directories.
fs_movewriteMove or rename a file or directory, optionally replacing the destination.
fs_patchwriteApply oldText/newText replacements to a file.
fs_readreadRead a UTF-8 text file with optional 1-based line range and hard output bounds.
fs_read_binaryreadRead a bounded binary file as base64 with MIME-relevant metadata.
fs_replace_linesreadReplace lines startLine..endLine (1-based, inclusive, as shown by fs_read) with new text. Pass expect (the first old line) to refuse the edit if the file has moved. Use an empty newText to delete lines, or endLine = startLine - 1 style ranges via fs_patch to insert.
fs_statreadReturn file type, size, timestamps, mode, target and hash metadata.
fs_writedestructiveCreate or overwrite a file atomically. Parent directories are created automatically.
git-mcpreadGit repository inspection and operations through the standard Python MCP server.
git_branchdestructiveList, create, switch, rename, or delete branches. MaskShift runs these directly without permission prompts.
git_checkpoint_createwriteSnapshot tracked and untracked workspace changes so an agent run can be rolled back without interrupting normal Git history.
git_checkpoint_listreadList reversible MaskShift workspace checkpoints.
git_checkpoint_restorereadRestore a prior MaskShift checkpoint. This is destructive to current workspace changes.
git_commitwriteStage selected or all changes and create a commit. Optional amend and no-verify modes are supported.
git_diffwriteShow working-tree, staged, commit-range, or selected-file diffs with configurable context and output bounds.
git_logwriteRead compact commit history, optionally for a branch, range, author, grep expression, or path.
git_showwriteShow a commit, tag, tree, or file at a revision.
git_statusreadInspect branch, upstream, staged, modified, deleted, renamed, conflicted, and untracked files.
git_worktree_createwriteCreate a branch-backed Git worktree for isolated subagent or experimental work.
kubernetes_execwriteExecute any kubectl operation with a structured argument list and optional context, namespace, and kubeconfig.
learn_forgetdestructiveRemove one learned lesson or preference by id (from learn_status). Use it when something MaskShift learned is wrong or no longer applies.
learn_statusreadShow what MaskShift has learned from its own runs on this machine: lessons from earlier runs, preferences noticed from your messages, how each model and harness has done on which kinds of task, workflows it could turn into skills, and how well context was used.
lsp_code_actionsreadList the refactors and quick fixes the language server offers at a position or range (fix this error, extract a function, add a missing import...) and optionally apply one by index, by title, or the preferred one. Prefer this over hand-editing for mechanical refactors.
lsp_definitionreadResolve the definition location for a symbol at a source position.
lsp_diagnosticsreadReturn language-server errors, warnings, hints, and related information for a file.
lsp_discoverreadDetect installed language servers for TypeScript, Python, C/C++, Rust, Go, Java, Ruby, Lua, JSON, HTML, CSS, and YAML.
lsp_formatwriteAsk the language server to format a document and optionally apply the edits.
lsp_hoverreadGet type, signature, and documentation information at a 1-based source position.
lsp_organize_importsreadSort and prune a file\
lsp_referencesreadFind language-aware references for a symbol at a source position.
lsp_renamewriteCompute and optionally apply a workspace-wide language-aware symbol rename.
lsp_statusreadList active workspace language server processes and capabilities.
lsp_stopwriteStop one or all lazy language server processes for the workspace.
lsp_symbolsreadReturn language-server document symbols and hierarchy for a source file.
mcp_addwriteAdd any stdio or HTTP MCP server definition, including command, arguments, environment, URL, headers, and lazy loading settings.
mcp_callwriteInvoke a connected MCP tool directly. Prefer activating its qualified tool so the model can call it natively on later turns.
mcp_connectwriteLazily start or connect an MCP server, negotiate modern or legacy protocol, and discover its tools.
mcp_disconnectreadClose a workspace-scoped MCP connection and unload its tool schemas.
mcp_listreadList curated, imported, project, and configured MCP servers with live connection status and tool counts.
mcp_promptsreadList prompt templates provided by an MCP server.
mcp_registry_installwriteResolve a server from the official registry and add its remote or package transport to MaskShift configuration.
mcp_registry_searchreadSearch the live official MCP Registry instead of relying on a stale built-in server list.
mcp_resource_readreadRead a URI exposed by an MCP server.
mcp_resourcesreadConnect to a server and list its MCP resources.
mcp_searchreadSearch discovered MCP servers and tools already known to MaskShift. Servers remain lazy until connected.
measured-workflowreadA workflow used to test evidence-based promotion.
memory-mcpreadStandard persistent knowledge graph memory server.
memory_deletedestructiveDelete a memory by ID.
memory_listreadList memories ordered by effective importance: raw importance blended with a recency decay so stale, untouched memories sink without being deleted.
memory_optimizewriteFind duplicate-title memories to merge and stale, low-importance, never-accessed memories to prune. Defaults to a dry run that only reports candidates; set dryRun to false to apply the merge and prune.
memory_savewriteSave a durable project or global fact, architectural decision, convention, result, or reusable lesson. Automatically merges into an existing memory with the same title in the same scope instead of creating a duplicate, unless dedupe is set to false.
memory_searchreadSearch project and global long-term memory, ranked by a blend of text relevance, importance, and recency (older, untouched memories decay in rank without being deleted).
mined-demoreadd
model_calibratewriteRun short probes (tool calling, a precise edit, planning, long-context recall) against a model and store the scores, so the harness sizes its help to what the model can actually do. Costs a few thousand tokens.
model_profilereadShow a model
model_routereadRank configured models for a task using language/domain fit and prior MaskShift outcomes.
network_diagnosewriteRun ping, DNS lookup, or traceroute against a host and return structured, parsed results instead of raw command text.
node_cellwriteExecute arbitrary JavaScript as an ES module in a temporary script with workspace cwd.
notebook_editdestructiveReplace, insert, or delete one cell in a Jupyter (.ipynb) notebook by index. Replacing or inserting a code cell clears its stale outputs and execution count.
notebook_readreadRead a Jupyter (.ipynb) notebook and return each cell\
openai-docsreadSearch and read official OpenAI developer documentation.
plan_dag_updatewriteCreate a dependency-aware execution plan whose ready nodes can run concurrently and whose dependent nodes receive predecessor results.
plan_getwriteReturn the current run plan and progress.
plan_updatewriteCreate or update the run plan with concise steps and statuses. Use it for multi-step work and keep it synchronized with actual progress.
playwrightreadBrowser navigation, interaction, screenshots, accessibility snapshots, and UI testing.
plugin_activatereadLoad a plugin directly into the MaskShift process with full tool registration access.
plugin_deactivatedestructiveRun a plugin cleanup hook and remove its registered tools.
plugin_installwriteInstall a plugin from a local directory, Git repository, or npm package and activate it.
plugin_listreadList discovered runtime plugins, their status, tools, and skill directories.
plugin_reloadwriteDeactivate and re-import one plugin, or every discovered plugin, without restarting MaskShift.
plugin_scaffoldreadGenerate and activate a complete single-tool MaskShift plugin scaffold.
plugin_scanreadRescan user and workspace plugin directories and activate newly discovered plugins.
port_inspectreadInspect listening sockets and processes using ss, netstat, or lsof.
project_index_statusreadShow local indexed file, chunk, character, and freshness statistics.
project_inspectreadSummarize repository shape, dominant languages, build manifests, instructions, Git state, and local index health.
project_instructionsreadLoad AGENTS.md, CLAUDE.md, MASKSHIFT.md, Copilot instructions, and other configured context files from repository root through the working directory.
project_read_manifestreadRead and optionally parse a package/build manifest such as package.json, pyproject.toml, Cargo.toml, go.mod, or CMakeLists.txt.
project_treereadRender a bounded source tree for any workspace subdirectory.
provider_listreadInspect configured model providers, connectivity status, and discovered models.
ps_listreadList running processes on the host as structured records (pid, user, cpu%, mem%, command) — parsed, so nothing needs to eyeball raw
python_cellwriteExecute an arbitrary Python code cell in a temporary script with workspace cwd and return stdout/stderr.
race-telemetryreadFixture plugin
race_telemetry_snapshotreadReturn a compact snapshot of the live MaskShift capability platform.
record_valuereadRecord one named value.
repo_indexreadBuild or refresh MaskShift’s local SQLite FTS code index for structure-aware context retrieval.
repo_searchreadSearch the local repository index using full-text ranking, blended with embedding-based semantic similarity when a local Ollama embedding model is available, and return bounded source chunks.
router_explainreadShow how MaskShift would route a task: the models and the installed agent harnesses ranked by how they have actually done on similar tasks (success rate, cost), and how much evidence is behind each.
rsync_transferwriteSynchronize local and remote files with rsync over SSH.
search_filesreadFind files by fuzzy substring or glob across a workspace while respecting common repository ignores.
search_textreadFast recursive source search using ripgrep when available, with regex, glob, case, hidden-file, and context controls.
sequential-thinkingreadStructured multi-step reasoning tool for complex planning and revision.
session_historyreadRead messages and recent runs from the current MaskShift session.
shell_execwriteRun any Unix shell command on the host with the full user environment. Use for builds, tests, package managers, compilers, scripts, system inspection, and repository automation.
shell_exec_parallelwriteRun multiple independent shell commands concurrently and return every result.
shell_process_listreadList processes launched by MaskShift, optionally limited to the current workspace or active processes.
shell_process_readreadRead current status and incremental output from a persistent process.
shell_process_stopdestructiveTerminate a persistent process and its Unix process group.
shell_process_writewriteSend text or control sequences to a persistent process stdin.
shell_startwriteStart a persistent host process with live stdout/stderr streaming. Returns a process ID for later reads, input, or termination.
skill_createwriteCreate a durable user skill from a successful workflow so future runs can discover it automatically.
skill_evaluatereadRecord comparable baseline and candidate outcomes for a reusable skill. This creates empirical evidence without changing the skill.
skill_improvereadAppend a validated lesson or refinement to an existing skill.
skill_loadreadLoad the full instructions and metadata for a selected skill into the current run.
skill_minereadLook through recent runs for sequences of steps repeated across several runs that mostly went well, and draft a skill for each. Nothing is installed until skill_mine_accept.
skill_mine_acceptwriteInstall a skill drafted by skill_mine (by name or id), or dismiss it so it is not suggested again.
skill_promote_validatedwriteApply a skill improvement only when recorded A/B trials meet minimum evidence and improve success without regressions.
skill_read_referencereadRead a file referenced by a skill while preventing path escape from the skill directory.
skill_searchreadSearch all bundled, project, Claude, Codex, Copilot, and user skill catalogs. Skill bodies are loaded only when selected.
sqlite_querywriteOpen any SQLite database directly through Node native SQLite, execute parameterized SQL, and return structured rows. Write statements are allowed.
sqlite_schemawriteReturn tables, views, indexes, triggers, and CREATE statements from a SQLite database.
ssh_execwriteRun a command on any SSH host with user, port, identity, jump host, environment, and timeout controls.
storage_prunedestructiveDelete old checkpoints, stale search indexes, old run events and oversized logs according to the host-derived retention. Never deletes chats, memory or workspace files. Defaults to a dry run that only lists what would go.
storage_statusreadReport how much disk MaskShift uses (database, checkpoints, browser profiles, logs), the budget derived from this machine\
symbol_outlinereadExtract a lightweight outline of classes, functions, interfaces, structs, methods, and test blocks from source files.
symbol_readreadReturn one definition (function, class, method as Class.method) with its line range, without reading the whole file. With no symbol, list the definitions in the file.
symbol_replacereadReplace one definition by name with new source. You supply only the new text; the old text is located for you, so it never has to be reproduced exactly. Use Class.method for methods.
system_inforeadReturn operating system, CPU, memory, process, shell, runtime, and workspace information.
system_servicewriteInspect, start, stop, restart, reload, enable, or disable a systemd service on the host.
text_statsreadReport line, word, and byte counts for one or more text files (like wc) without spending context on their contents — use before deciding whether to read a file in full.
04

Trust audit

BLOCKgrade F · trust 53/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (10 observation(s))
Shell
declared (4 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
skills/claude-api/SKILL.md:395
**Managed Agents** is a third surface: server-managed stateful agents with Anthropic-hosted tool execution. You create a persisted, versioned Agent config (`POST /v1/agents`), then start Sessions that
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/learning/uncertainty.mjs:65
const SENSITIVE_PATHS = /(^|\/)(\.ssh|\.gnupg|\.aws|\.config\/gcloud|\.bashrc|\.zshrc|\.profile|\.bash_profile|authorized_keys|id_rsa|id_ed25519|\.netrc|\.npmrc|sudoers)(\/|$)|^\/(etc|boot|usr|bin|sbi
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
skills/web-artifacts-builder/scripts/shadcn-components.tar.gz
shadcn-components.tar.gz
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:14
OLLAMA_BASE_URL=http://127.0.0.1:11434
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:17
LMSTUDIO_BASE_URL=http://127.0.0.1:1234/v1
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:18
VLLM_BASE_URL=http://127.0.0.1:8000/v1
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/browser/manager.mjs:182
try { version = await fetchJson(`http://127.0.0.1:${port}/json/version`, {}, 1000); break; } catch { await new Promise((resolve) => setTimeout(resolve, 120)); }
MEDIUMPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
skills/claude-api/SKILL.md:23
2. **Raw HTTP** (`curl`, `requests`, `fetch`, `httpx`, etc.) - only when the user explicitly asks for cURL/REST/raw HTTP, the project is a shell/cURL project, or the language has no official SDK.
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
automation_delete, browser_close, container_stop, environment_set, fs_delete, fs_write, git_branch, learn_forget, memory_delete, notebook_edit, plugin_deactivate, shell_process_stop, storage_prune
Why it matters. 13 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
tests/fixtures/documents/deck.odp
deck.odp
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
tests/fixtures/documents/deck.pptx
deck.pptx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
tests/fixtures/documents/report.docx
report.docx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
tests/fixtures/documents/report.odt
report.odt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/documents/pdf.mjs:269
const md5 = (...parts) => crypto.createHash('md5').update(Buffer.concat(parts.map((part) => (typeof part === 'string' ? Buffer.from(part, 'latin1') : Buffer.from(part))))).digest();
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/documents/pdf.mjs:271
function rc4(key, data) {
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/documents/pdf.mjs:325
let method = 'RC4';
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/documents/pdf.mjs:355
if (R === 2) check = rc4(fileKey, PAD);
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/documents/pdf.mjs:357
check = rc4(fileKey, md5(PAD, ids[0] ?? ''));
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/learning.test.mjs:381
assert.equal(assessCall({ name: 'fs_write', args: { path: '~/.ssh/authorized_keys', content: 'x' } }).level, 'high');
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/agent/personas.mjs:7
const BUNDLED_AGENTS = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../agents');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/agent/skills.mjs:6
const BUNDLED_SKILLS = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../skills');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/regressions.test.mjs:219
runtime.toolRegistry.execute('skill_read_reference', { name: 'audit-fixture', reference: '../../../etc/passwd' }, context),
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/smoke-test.mjs:106
baseUrl: `http://127.0.0.1:${modelPort}/v1`, apiKeyEnv: null,
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
tests/image.test.mjs:23
'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha e389ef952e8dfull audit observations/trust-audit/mcp-server/nafeeur__maskshift.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11e389ef952e8dBLOCKF53first audit
06

Questions

What is the MaskShift MCP server?

Maximalist harness

What tools does MaskShift expose?

200 in total: 125 read-only, 69 that write, and 13 that can delete or overwrite (automation_delete, browser_close, container_stop, environment_set, fs_delete). Every one is listed on this page with its risk.

Is MaskShift safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (53/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 13 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does MaskShift need?

It reads BRAVE_API_KEY, EXA_API_KEY and TAVILY_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does MaskShift run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as maskshift at 2.0.0.

How current is this page?

The grade is for one exact copy of the source (e389ef952e8d), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement