MCP servers › io.github.Albasha0x0 › corvus
MCP server · registry snapshot 2026-10-23 · last tested 2026-10-23
io.github.Albasha0x0/corvus
Reverse engineering of .NET assemblies and native binaries: decompile, search, compare, patch. — the publisher's description
Summary
io.github.Albasha0x0/corvus is a local MCP server listed in the official MCP registry at version 2.4.0. On 2026-10-23 ProtocolProbe started its published package in an isolated sandbox in read-only mode and read its inventory: 165 tools, 1 resource and 15 prompts.
Record checks
5 of 5 record checks met · 4 do not apply
- met: Registry entry is active and says how to run it
- met: Source repository link opens
- met: Repository is not archived
- met: Code pushed to the repository in the 90 days before our check
- met: Repository publishes a security policy (SECURITY.md)
- not applicable: Package names its licence with a standard (SPDX) identifier
- not applicable: The version the registry lists can be installed and is not withdrawn
- not applicable: npm package carries build provenance (attestation)
- not applicable: No known critical or high advisory in the package or its dependencies
- Not ranked by downloads: not an npm or PyPI package
- Not ranked by stars: 8 stars (ranked from 10)
From public records, not a safety rating. Each check with its reason · Is it safe to install?
Key facts
- Runs
- local package
- Transport
- standard input/output
- Package
- NuGet
- Repository
- public
- Tools
- 165
- Described as changing data
- 45 of 165 toolsAI-classified
- Mainly works on
- files and code on the machine it runs onAI-classified
- Topic
- developer-toolsAI-classified
- Last tested
- 2026-10-23
Worth knowing before you connect it
- 45 tools are described as changing something (patch_asm, update_to_new_build, record_note, …): our AI model's reading of the descriptions, not something we tested. We did not call them.
Each line comes from a section below, with its source and date.
How fresh this is
- Live-tested
- yes, a real session (not a text-only review)
- Last tested
- 2026-10-23
- Mode
- read-only (no tool calls)
- Latest version
- 2.4.0, published 2026-10-18 (registry, as of the 2026-10-23 snapshot)
- First listed version
- 2026-10-14 (earliest version still in the registry; older removed versions would be earlier)
- Version history
- 5 versions listed, 2026-10-14 to 2026-10-18; 5 in the 90 days before the 2026-10-23 snapshot.(versions still listed in the registry only)
Most recent 5 versions
2.4.0· 2026-10-182.3.0· 2026-10-152.2.0· 2026-10-152.1.0· 2026-10-152.0.2· 2026-10-14
- Registry data
- snapshot 2026-10-23
- Package and repository
- checked 2026-10-22
- Engine
- mcp-runtime-engine@0.1.0 · sdk@1.32.0
Changes since the last refresh
New in the registry: not in the list of 2026-10-04, listed on 2026-10-23 with version 2.4.0 (published 2026-10-18).
Source: the official MCP Registry list on 2026-10-04 and on 2026-10-23.
What it is
What does this server offer?
Observed inventoryWhat it mainly works on, as our AI model read its tool descriptions: files and code on the machine it runs on.
45 of 165 tools are described as changing something (creating, editing, deleting, sending or running). For 48 the reading was uncertain, so no mark is shown.
- patch_asmdescribed as changing data
“Assemble x86/x64 instructions (multi-line; labels, numeric and symbol branch targets; 'db <hex>') and write them at a native address in memory, branches and RIP-relative references computed for that …”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
9 inputs, 3 required
imagestringrequired“Native image id, file name or path.”addressstringrequired“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”assemblystringrequired“Assembly, one instruction per line.”allowUnsafeboolean“Allow mid-instruction, past-function-end, header or loader-written bytes.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”relocationsstring“PE relocations: auto (default; keep valid, clear stale, add new), keep, or neutralize (clear all).”extendboolean“Put code larger than the site in a stub (placement) it jumps to and back.”stubModestring“With extend: replace (default; the displaced instructions), before or after them.”placementstring“With extend: auto (default; cave, else section), cave or section (a new PE section or ELF/Mach-O segment).”
“Outline of a type without decompiling: declaration, attributes, member counts, the first members of each kind; a section pages one kind (constants, enum values, signatures, tokens, IL sizes, Il2Cpp R…”
Publisher declares: read-only yes · open-world no
7 inputs, 1 required
typestringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”assemblystring“Assembly id, name or path; omit for all loaded.”sectionstring“summary, nested, fields, properties, events, methods or all.”includeCompilerGeneratedboolean“Include compiler-generated members.”offsetintegerlimitintegermaxTokensinteger
- dump_heapreads or searches
“Lists the .NET GC heap of a minidump (through the DAC).”
Publisher declares: read-only yes · open-world no
8 inputs, 1 required
dumpstringrequired“A .dmp path or the id open_minidump returned.”modestring“stats (per type) or objects (one row each).”typestring“Type full name, '*' / '?' wildcards; default all.”minSizeinteger“Min object size in bytes.”offsetintegerlimitintegermaxObjectsinteger“Max objects walked.”maxTokensinteger
- update_to_new_buildcreates or changes datadescribed as changing data
“Carry work from an old native build to the new one through one function match: names, comments, engine types, PDB and Il2Cpp layers, patches, code-pattern drift, Il2Cpp method mapping, notes.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
15 inputs, 2 required
oldImagestringrequired“The old build: native image id or path.”newImagestringrequired“The new build: native image id or path.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”includearray“Categories to carry (default all).”patchSetstring“Patch set (export_native_patches json): text or path.”stubPlacementstring“Re-created patch stubs: auto, cave or section.”oldIl2Cpparray“Old build's Il2Cpp dummy assemblies.”newIl2Cpparray“New build's Il2Cpp dummy assemblies.”codeOnlyboolean“Match functions by code only, not by names.”maxPatternsinteger“Most code patterns made (0-1000).”categorystring“Only items of this category.”outcomestring“Only items with this outcome.”offsetintegerlimitintegermaxTokensinteger
- record_notecreates or changes datadescribed as changing data
“Record a finding, question, hypothesis or todo anchored to a native address, a .NET member, a file or a dump; notes persist per user, keyed by SHA-256 / MVID so they follow the binary, and decompile_…”
Publisher declares: read-only no · destructive no · idempotent no · open-world no
6 inputs, 1 required
textstringrequired“At most 4,000 characters.”kindstring“Default finding.”statusstring“Default open.”anchorstring“'<image>@<address>', '<assembly>:<symbol or token>', image or assembly id, 'dump:<id or path>', or empty (session-wide).”tagsarray“At most 10.”evidencearray“At most 10: {result: r-… or last:N, expect: supports|refutes}, {tool, args} of a call made here, or {text}.”
- load_pdbcreates or changes datadescribed as changing data
“Load a native image's debug symbols: PDB (GUID and age checked), or DWARF for ELF and Mach-O (own sections, build-id or .gnu_debuglink, dSYM): names, types, source lines.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
8 inputs, 1 required
imagestringrequired“Native image id, file name or path.”pathstring“PDB or debug file, dSYM, or a folder (or symbol store) to look in first.”downloadboolean“Download when nothing local matches: symbol server (PDB), debuginfod (ELF).”serverstring“Default: PDB _NT_SYMBOL_PATH servers, else Microsoft's; DWARF CORVUS_DEBUGINFOD_URLS.”allowMismatchboolean“Use path's file even if GUID/age or build-id differs (names may be wrong).”timeoutSecondsinteger“Download time limit in seconds.”maxMegabytesinteger“Download size limit in MB.”clearboolean“Remove the PDB names and their saved copy instead (not read again this session).”
- reanalyze_nativeruns code or commandsdescribed as changing data
“Re-run IDA's or Ghidra's auto-analysis over an image (or from-to) and save; a full run also completes a Ghidra analysis the open's budget cut short.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world yes
12 inputs, 1 required
imagestringrequired“Native image id, file name or path.”enginestring“auto (default), ida or ghidra.”analyzersboolean“List the analyzer options and values instead of running.”filterstring“With analyzers: name filter.”optionsarray“name=value per option (AF_FLIRT=false, 'Decompiler Parameter ID=true').”presetstring“full (Ghidra defaults) or a preset in analysis-presets.json (data folder).”backgroundboolean“Run with no caller waiting; other engine calls get conflict until it ends.”fromstring“Range start (default: the whole image).”tostring“Range end (exclusive).”timeoutSecondsinteger“Seconds (1-3600); what is left runs on the next run.”offsetinteger“With analyzers: rows to skip.”limitinteger“With analyzers: max rows.”
“Functions a native image imports, per library (delay-load and lazy binding marked), with the IAT slot code calls through; API sets show their DLL.”
Publisher declares: read-only yes · open-world no
8 inputs, 1 required
imagestringrequired“Native image id, file name or path.”librarystring“Only this library (name with or without .dll).”filterstring“Name substring (case-insensitive).”bindboolean“Bind each import to the export it reaches, with a summary.”offsetintegerlimitintegerincludeDynamicboolean“Also GetProcAddress imports, marked [dynamic] (waits for the code index).”maxTokensinteger
“Every match of a symbol string or token, with kind, assembly, token and signature: disambiguate before other calls.”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
symbolstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”assemblystring“Assembly id, name or path; omit for all loaded.”kindstring“Restrict to this kind.”offsetintegerlimitintegermaxTokensinteger
- get_android_manifestreads or searches
“AndroidManifest.xml decoded.”
Publisher declares: read-only yes · open-world no
4 inputs, 1 required
pathstringrequired“An .apk, .aab or split set (.apks, .xapk, .apkm).”viewstring“summary (default) or components.”offsetintegerlimitinteger“Most components.”
- inspect_processreads or searches
“Inspects a running Windows process read-only, addresses named as in dumps.”
Publisher declares: read-only yes · open-world yes
10 inputs, 1 required
processstringrequired“Process id (decimal or 0x hex), name (notepad[.exe]; a shared name is refused with the ids) or session id (live-1).”viewstring“summary, modules, regions, threads or stacks.”threadstring“threads: only this one; stacks: the thread walked (default first).”offsetintegerlimitintegerregionFilterstring“regions: committed (default), all, executable, writable, image, private or mapped.”maxFramesinteger“view=stacks: max frames walked (up to 256).”imageDirectoriesstring“Program binary folders (';'-separated), for modules whose file is unreadable.”timeoutSecondsinteger“Time limit in seconds (up to 120).”maxTokensinteger
- compare_assembliesreads or searches
“Compare two builds of an assembly: renamed, moved, added and removed types and members (matched by content in tiers, unique-only; else ambiguous) and how each matched member changed (signature, body …”
Publisher declares: read-only yes · open-world no
12 inputs
oldAssemblystring“The old build (id, name or path).”newAssemblystring“The new build (id, name or path).”namespacestring“Only types whose old or new full name starts with this.”changesarray“Kinds to list (unknown: unpaired for lack of evidence); default all but address.”typeCountsOnlyboolean“Count added and removed types without listing them.”includeCompilerGeneratedboolean“Also list compiler-generated types and members (closures, state machines).”tokenMapboolean“Keep the whole old -> new token map as a result (tokenMapResultId).”offsetintegerlimitinteger“Changes per page (default 100).”maxTokensintegeroldResultstring“Instead: a kept result (r-…), last:N (a recent call) or a bundle entry (file.json#r-…).”newResultstring“The new side, from the same tool.”
Show 88 more tools
- live_sessiondoes something elsedescribed as changing data
“Open, list, inspect or close a session on a local program.”
Publisher declares: read-only no · destructive no · idempotent no · open-world yes
6 inputs
actionstring“list, processes, attach, spawn, status, snapshot or close.”programstring“attach: process id or name; spawn: program path, started suspended; processes: a name filter.”argumentsarray“spawn: program arguments.”sessionstring“Session id from live_session.”outputPathstring“snapshot: the dump file (default: the temp folder).”overwriteboolean“Replace outputPath if it exists.”
“Change a note in part: status, kind, text, tags, evidence; verify=true re-checks linked records and sets a hypothesis confirmed or refuted when they verify and name its anchor, else open.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
10 inputs, 2 required
idstringrequired“Note id.”expectedRevisionintegerrequired“The revision last read.”statusstring“New status.”kindstring“New kind.”textstring“Replacement text.”appendTextstring“Text appended on a new line.”addTagsarray“Tags to add.”removeTagsarray“Tags to remove.”addEvidencearray“At most 10: {result: r-… or last:N, expect: supports|refutes}, {tool, args} of a call made here, or {text}.”verifyboolean“Re-check linked records after the other changes.”
- get_ilreads or searches
“IL disassembly (ildasm style, tokens, offsets, try blocks) of a member or type; each method starts with its normalized IL hash (stable across rebuilds) and raw IL SHA-256.”
Publisher declares: read-only yes · open-world no
5 inputs, 1 required
symbolstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”assemblystring“Assembly id, name or path; omit for all loaded.”sourceboolean“Portable PDB source lines at IL offsets, local names, SourceLink URLs.”offsetintegermaxTokensinteger
- live_timelinereads or searches
“Collect a timestamped trace of the files, registry keys, endpoints and child processes a session's program opens, from the OS diagnostics channel (event tracing on Windows); entries page with a curso…”
Publisher declares: read-only no · destructive no · idempotent no · open-world yes
10 inputs
sessionstring“Session id; start only.”actionstring“start, stop, list, report or diff.”runstring“Timeline id (tl-1); without it, list shows the timelines.”astring“diff: the first timeline.”bstring“diff: the second timeline.”categorystring“Only file, registry, network or process.”matchstring“Only names containing this.”cursorstring“list: cursor from an earlier page; default the oldest entry kept.”offsetinteger“Rows to skip.”limitinteger
- get_android_package_inforeads or searches
“One installed package (dumpsys package): versions, SDKs, paths, ABI, flags, install times, installer, uid, requested permissions with their grant state, and per-user state.”
Publisher declares: read-only yes · open-world yes
2 inputs, 1 required
packagestringrequired“Package name, e.g.”serialstring“Device serial; optional with one device ready.”
- undo_native_editdescribed as changing data
“Undo native edits by editId (list_native_edits), the last by default: a patch, name, comment or engine type edit gets its previous value back, pushed to the engines.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
2 inputs, 1 required
imagestringrequired“Native image id, file name or path.”editIdstring“image#n or #n; comma-separated for several, undone in order; default the last.”
- list_android_resourcesreads or searches
“Compiled resources of an Android package (resources.arsc, or a bundle's resources.pb): a row per resource and configuration with id, type, name, qualifiers, value type and value (cut at 200 character…”
Publisher declares: read-only yes · open-world no
7 inputs, 1 required
pathstringrequired“An .apk, .aab or split set (.apks, .xapk, .apkm).”typestring“Only this type (string, layout, xml, ...).”namestring“Only names matching this (* and ?”configstring“Only this configuration (pt-rBR, or default).”offsetintegerlimitinteger“Most rows.”maxTokensinteger
- ida_pythonruns code or commandsdescribed as changing data
“Run Python in the IDA worker holding a native image's database (idalib): IDAPython modules imported, base = image base, globals persist (reset=true clears); returns a final expression's value, stdout…”
Publisher declares: read-only no · destructive yes · idempotent no · open-world yes
8 inputs, 1 required
imagestringrequired“Native image id, file name or path.”codestring“Python source (or pass scriptPath).”resetboolean“Clear the globals earlier calls left.”enginestring“Default auto.”scriptPathstring“A .py file to run instead of code.”maxTokensintegerpersistboolean“Save the database after the script.”allowErrorboolean“Return an exception as the result instead of an error.”
“Assembly overview: identity (MVID, SHA-256), framework, entry point, counts, Il2Cpp, invalid IL, protection product, edits; view=references: where references resolve; view=metadata: PE headers, strea…”
Publisher declares: read-only yes · open-world no
2 inputs, 1 required
assemblystringrequired“Assembly id, name or path.”viewstring“summary, references, metadata or all.”
“Android devices and emulators adb sees: serial, state, product, model, transport.”
Publisher declares: read-only yes · open-world yes
Takes no inputs.
- dump_objectreads or searches
“One .NET object of a dump (DAC): type, size, fields (references expanded depth levels), a string's or boxed value, or array elements.”
Publisher declares: read-only yes · open-world no
5 inputs, 2 required
dumpstringrequired“A .dmp path or the id open_minidump returned.”addressstringrequired“Hex address of the object.”depthinteger“Levels of referenced objects expanded (up to 3).”maxFieldsinteger“Max fields listed, nested ones included.”maxArrayItemsinteger“Max array elements listed.”
- search_bytesreads or searches
“Find a byte pattern in a native image's mapped sections (hex, or text as ASCII and UTF-16): each hit's VA, section and file offset; memory=engine searches the engine's loaded bytes.”
Publisher declares: read-only yes · open-world no
10 inputs, 1 required
imagestringrequired“Native image id, file name or path.”patternstring“Hex ('48 8B 05 ??”textboolean“pattern is text (ASCII and UTF-16LE).”sectionstring“Only this section (e.g.”limitinteger“Max hits.”offsetintegerpatternsarray“Instead of pattern: up to 50 patterns.”maskstring“Bit mask per pattern byte ('FF F0 FF').”memorystring“file (default), or engine / ida / ghidra: its loaded bytes.”maxTokensinteger
“Which server runs (version, program, install kind, client), catalog digest, what is loaded, limits, long-running tools, capabilities with fixes, tool families, unusable tools, engine sessions.”
Publisher declares: read-only yes · open-world yes
2 inputs
expectedCatalogDigeststring“Catalog digest to compare (t92-0123456789ab.p5-01234567).”expectedExecutablestring“Registered server program path, compared with the running one.”
- patch_method_ilcreates or changes datadescribed as changing data
“Rewrite a method body from IL text (stack-validated): edit get_il's lines and pass them back (syntax: guide edits).”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
5 inputs, 2 required
methodstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”ilstringrequired“IL instructions, one per line.”modestring“replace or prepend.”assemblystring“Assembly id, name or path; omit for all loaded.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”
- trace_native_featurereads or searches
“Native code behind a behaviour, from a text or value: strings, names, imports (also late-bound), exports, RTTI classes and constants matching query ("quoted": exact) lead to their references, ranked …”
Publisher declares: read-only yes · open-world yes
10 inputs, 2 required
imagestringrequired“Native image id, file name or path.”querystringrequired“Case-insensitive substring, or a regex with regex=true.”regexboolean“Treat query as a regular expression.”kindsstring“Comma-separated: strings, names, imports, exports, classes, constants (default all).”maxSeedsinteger“Matches followed (1-500); the rest are counted.”callerDepthinteger“Caller levels searched for hubs (0-3).”offsetintegerlimitinteger“Functions per page (max 500).”maxTokensintegerenginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”
- make_code_pattern
“Make a rebuild-proof byte pattern for an address: displacements and relocated addresses as ??”
Publisher declares: read-only yes · open-world yes
9 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”addressesarray“Instead of address: up to 50 addresses.”anchorstring“auto, address, reference, xrefs or range.”maxBytesinteger“Longest pattern in bytes (8-512).”maxPatternsinteger“anchor=xrefs: most signatures (1-32).”enginestring“anchor=xrefs: auto, ours, ida or ghidra (engine references added).”formatstring“ida, x64dbg, mask (\x48\x00 x?) or bitmask (0x48, 0x00 0b01).”endstring“anchor=range: exclusive end, an address or +length.”
- search_dexreads or searches
“Search DEX code.”
Publisher declares: read-only yes · open-world no
7 inputs, 3 required
pathstringrequired“An Android package, a .dex, or a jar with classes*.dex.”kindstringrequired“What to search.”querystringrequired“Case-insensitive substring or * / ?”offsetintegerlimitinteger“Most hits.”maxTokensintegermappingstring“R8 / ProGuard mapping.txt: shows and accepts original names; kept per package.”
- generate_cpp_bindinggenerates content
“Generate C++ binding code for a managed type of a Mono or Il2Cpp app: a struct resolving the class, field offsets, static fields and methods once, with typed accessors, property getters and invoke wr…”
Publisher declares: read-only yes · open-world no
9 inputs, 1 required
typestringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”assemblystring“Assembly id, name or path; omit for all loaded.”membersstring“Comma-separated member names; default all but compiler-generated ones.”includeInheritedboolean“Also bind property getters inherited from base classes.”stylestring“Omit to detect it.”projectDirstring“C/C++ project the header is for, scanned for a host function table and helpers.”headerPathstring“Header save path (absolute or under projectDir; default projectDir); #include base.”offsetintegermaxTokensinteger
- rename_namespacecreates or changes datadescribed as changing data
“Move every type of a namespace (optionally its sub-namespaces) to a new namespace, in memory.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
5 inputs, 3 required
assemblystringrequired“Assembly id, name or path.”oldNamespacestringrequired“Existing namespace ('' for the global namespace).”newNamespacestringrequired“New namespace.”includeSubNamespacesboolean“Also rewrite namespaces that start with oldNamespace + '.'.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”
- resolve_call_targetsreads or searches
“Targets of call and tail-jump sites in native code (x86 / x64 / ARM) with basis and confidence: branches, import and GOT slots, thunks, constant pointers (also CFG dispatch), GetProcAddress, RTTI vir…”
Publisher declares: read-only yes · open-world yes
10 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“A call, or an address in a function (its sites): Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”scopestring“site, function or image (all indirect sites); default: site at a call, else function.”statusstring“Default all; indirect: all but direct branches.”deepboolean“Trace pointers that arrive as parameters back into the callers (slower).”enginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”offsetintegerlimitinteger“Max sites (default 75, max 1000).”timeoutSecondsinteger“Seconds per engine request (default CORVUS_ENGINE_REQUEST_TIMEOUT); scans then answer partial.”maxTokensinteger
- list_android_packagesreads or searches
“Packages installed on a device (pm list packages -f -U -i): name, APK path, uid and installer.”
Publisher declares: read-only yes · open-world yes
6 inputs
serialstring“Device serial; optional with one device ready.”querystring“Only package names containing this.”userinteger“Android user id (default: the current one).”offsetintegerlimitinteger“Most packages.”maxTokensinteger
- pull_android_package
“Copies every APK of an installed package (base and splits) into a new or empty directory, with size and SHA-256 each, and summarizes the base APK.”
Publisher declares: read-only no · destructive no · idempotent yes · open-world yes
3 inputs, 2 required
packagestringrequired“Package name, e.g.”outputDirectorystringrequired“A new or empty directory to write the APKs to.”serialstring“Device serial; optional with one device ready.”
- pull_android_filecreates or changes datadescribed as changing data
“Copies one device file (not a directory) to outputPath with its size and SHA-256; a failed pull leaves nothing.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
4 inputs, 2 required
remotePathstringrequired“The file's path on the device.”outputPathstringrequired“The local file to write.”overwriteboolean“Replace outputPath if it exists.”serialstring“Device serial; optional with one device ready.”
“Exception handling of the native function at an address.”
Publisher declares: read-only yes · open-world no
4 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”offsetintegermaxTokensinteger
- open_minidumpreads or searches
“Reads a Windows minidump (.dmp) or Linux/Android ELF core; returns the dump id.”
Publisher declares: read-only yes · open-world yes
8 inputs, 1 required
pathstringrequired“The .dmp path (or an open dump's id).”viewstring“summary, modules, threads, memory or unloaded.”offsetintegerlimitintegerimageDirectoriesstring“Program binary folders (';'-separated), kept for the dump, plus its own folder.”dacPathstring“DAC (mscordaccore.dll / mscordacwks.dll) file or folder for a build not installed.”downloadDacboolean“Fetch a matching DAC from a symbol server (network; refused under CORVUS_OFFLINE=1).”maxTokensinteger
- get_nativeaot_inforeads or searches
“What a NativeAOT image's metadata recovers (.NET 7-10; PE, ELF, Mach-O).”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
imagestringrequired“Native image id, file name or path.”viewstring“What to show (default summary).”querystring“view=type: a type name or MethodTable address; list views: substring filter.”offsetintegerlimitintegermaxTokensinteger
“Typed values (URLs, domains, IPs, emails, file paths, pipes, registry keys, mutexes, user agents, crypto keys) from an assembly's literals, constants, resource text and decoded base64 / hex / compres…”
Publisher declares: read-only yes · open-world no
6 inputs
assemblystring“A loaded assembly; pass this or path.”pathstring“A .NET assembly file to analyze without loading it; pass this or assembly.”typesarray“Only these types.”offsetintegerlimitintegermaxTokensinteger
“Write this session's work to one JSON file: loaded files (path, relative path, SHA-256), .NET edits, native patches, names, comments, notes, Il2Cpp games, open minidumps; load_session restores it on …”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
3 inputs, 1 required
outputPathstringrequired“Output file path (.json).”overwriteboolean“Replace the file if it exists.”includestring“Comma-separated: edits, patches, annotations, notes or all (default).”
“Unsaved edits of an assembly in order; each number (editId <assembly>#<n>) stays when other edits are undone.”
Publisher declares: read-only yes · open-world no
4 inputs, 1 required
assemblystringrequired“Assembly id, name or path.”offsetintegerlimitinteger“Max rows (default 200).”maxTokensinteger
- find_xrefsreads or searches
“What references a native address: calls (also via import slots, thunks), jumps, reads/writes, address uses, switch tables, relocations, RTTI virtual calls; each with its function and call arguments.”
Publisher declares: read-only yes · open-world yes
10 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”offsetintegerlimitintegeraddressesarray“Instead of address: up to 100 targets.”enginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”directionstring“to (default), from or both.”kindstring“any, code (calls, jumps), data (reads, writes, pointers), metadata (.pdata, CFG, exports).”scopestring“Struct member: typed (default) or all (every function; call again to continue).”maxTokensinteger
- export_il2cpp_symbolsdescribed as changing data
“Export Il2Cpp dummy-DLL metadata for native analysis: IDA Python and Ghidra scripts that create, name (Ns.Type$$Method) and comment every function (RVAs, so any image base works), a C header of struc…”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
5 inputs, 1 required
outputDirectorystringrequired“Output directory.”formatsstring“Comma-separated: ida, ghidra, header, json or all.”baseNamestring“Base name of the generated files.”assemblystring“Assembly id, name or path; omit for all loaded.”overwriteboolean“Replace files of the same names if they exist.”
- declare_native_typescreates or changes datadescribed as changing data
“Declare C types (structs, unions, enums, typedefs, function types) in the engine, replacing a same-named type; declarations win over recovered types.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
10 inputs, 1 required
imagestringrequired“Native image id, file name or path.”declarationsstring“C declarations; types they name must exist or be declared too.”typeNamestring“Enum, struct or union to edit.”membersstring“Enum: 'NAME=value, ...' (hex or decimal; or lines); 'NAME=' removes.”fieldsstring“Struct or union: 'name: type; name@0x10: type; @0x10: type' (or lines); 'name:' removes; '+name@0x10: type' inserts.”resizestring“Struct: its new size (hex or decimal); goes alone.”nameGapsboolean“Struct: name its unnamed gaps gap_<offset>.”deletestring“A type to delete.”renamestring“'Old=New'; kept edits naming it follow.”enginestring“auto (default), ida or ghidra.”
- live_breakdescribed as changing data
“Set, list or clear stop points by name, module!export, file:line or address; continue resumes held threads.”
Publisher declares: read-only no · destructive no · idempotent no · open-world yes
7 inputs, 1 required
sessionstringrequired“Session id from live_session.”actionstring“list, set, clear or continue.”atstring“set: a name, module!export, address or file:line.”stopPointstring“clear: stop point id.”threadstring“continue: thread id; default all.”waitboolean“Wait for the next stop.”waitSecondsinteger“wait: seconds (1-300).”
“Exported functions and data of a native image: ordinal, VA, name (demangled C++ form, ELF symbol version), forwarders and re-exports.”
Publisher declares: read-only yes · open-world no
5 inputs, 1 required
imagestringrequired“Native image id, file name or path.”filterstring“Name substring (case-insensitive; the demangled form too).”offsetintegerlimitintegermaxTokensinteger
“Load a .NET assembly or every assembly in a folder (app folder, Unity *_Data/Managed, DummyDll).”
Publisher declares: read-only no · destructive no · idempotent yes · open-world no
14 inputs, 1 required
pathstringrequired“Absolute path to an assembly file or a directory.”recursiveboolean“When path is a directory, also load assemblies in subdirectories.”loadProvidersboolean“Also load the DLLs a file's imports bind to (one level, at most 16), for the call tools.”slicestring“Mach-O slice (name or index; default arm64e, arm64, x86_64) or an Il2Cpp APK's ABI (default arm64-v8a).”formatstring“auto, or raw (headerless code).”archstring“raw: x86, x64, arm, thumb, arm64; mips, ppc, riscv64, 6502 etc.”basestring“raw: load address (default 0).”entrystring“raw: entry address or file offset (default start).”processorstring“IDA processor (-p), e.g.”languagestring“Ghidra language id, e.g.”compilerSpecstring“Ghidra compiler spec (also IDA's compiler): windows, gcc, borlandcpp, borlanddelphi ...”seedsarray“Starts before analysis: [function|code|label:]address[=name].”disableAnalyzersarray“Analyzers off at import (AF_FLIRT, 'Decompiler Switch Analysis').”programstring“A .gpr's program path, e.g.”
- stub_methodcreates or changes datadescribed as changing data
“Replace a method's body with 'return <value>;' ('return;' for void) in memory: force a check true, disable a call.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
4 inputs, 1 required
methodstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”valuestring“true/false, integer (decimal or 0x), float, "string" or null; omit for void or default(T).”assemblystring“Assembly id, name or path; omit for all loaded.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”
- live_eventsreads or searches
“Page a session's event ring with a cursor and filters, so polling never re-sends earlier events.”
Publisher declares: read-only yes · open-world yes
7 inputs, 1 required
sessionstringrequired“Session id from live_session.”cursorstring“Cursor from an earlier page; default the oldest event kept.”kindstring“Only this kind: stop, call, script, exception, module, thread, output, error or exit.”threadstring“Only this thread id.”fromstring“Only events of this watch or script id.”limitintegermaxTokensinteger
“What a method uses ('Uses'): calls, field reads / writes, types instantiated or cast, and strings, in IL order with offsets.”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
methodstringrequired“Type or member ('Ns.Type::Method(int)', short name, token) or native export ('kernel32.dll!CreateFileW', 'native:<image>!<name|#ord|addr>').”assemblystring“Assembly id, name or path; omit for all loaded.”distinctboolean“Collapse repeated targets into one row with a count.”offsetintegerlimitintegermaxTokensinteger
- add_members_csharpcreates or changes datadescribed as changing data
“Add C# members (methods, fields, properties, events, constructors, nested types) to a class or struct; private members accessible.”
Publisher declares: read-only no · destructive no · idempotent no · open-world no
4 inputs, 2 required
typestringrequired“The type to extend.”codestringrequired“C# member declarations.”assemblystring“Assembly id, name or path; omit for all loaded.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”
- live_readreads or searches
“Read a held thread's registers and program memory as typed values, named through the loaded images.”
Publisher declares: read-only yes · open-world yes
6 inputs, 1 required
sessionstringrequired“Session id from live_session.”threadstring“Thread id; default the earliest held one.”registersstring“Register names, comma-separated; default all.”memorystring“An address, register or name to read.”typestring“memory: int8..uint64, float, double, pointer, cstring, utf16; [n] for arrays.”lengthinteger“memory: bytes without a type (max 4096).”
- set_native_stack_varcreates or changes datadescribed as changing data
“Rename and/or retype a stack frame member, by its get_native_frame name (var_28) or frame offset (0x20, from the lowest address); a type at an empty offset creates one.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
10 inputs, 2 required
imagestringrequired“Native image id, file name or path.”functionstringrequired“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”variablestring“The member: its name, or its frame offset (hex).”newNamestring“New name (a C identifier).”typestring“New C type.”deleteboolean“Delete the member.”clearboolean“Drop the user's edit, restoring the engine's member.”showDecompilestring“The function's pseudocode after the edit (after) or its unified diff (diff).”enginestring“auto (default), ida or ghidra.”itemsstring“Instead: lines 'member = newName' or JSON [{variable, newName?, type?, delete?, clear?}].”
- patch_method_csharpcreates or changes datadescribed as changing data
“Replace a method's body (methods, constructors, accessors) with C# compiled against the assembly; private members accessible, lambdas, LINQ, async and yield work.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
4 inputs, 2 required
methodstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”codestringrequired“The new body's statements only.”assemblystring“Assembly id, name or path; omit for all loaded.”dryRunboolean“Default true: preview the IL that would be written; pass dryRun=false to apply.”
- read_dump_memoryreads or searches
“Hex dump of a dump's memory at an address with what is there (module!function, captured range, protection).”
Publisher declares: read-only yes · open-world no
6 inputs, 2 required
dumpstringrequired“A .dmp path or the id open_minidump returned.”addressstringrequired“Hex address, 'module+0x1234', or a module name (its base).”lengthinteger“Bytes to read (up to 65536).”dumpOnlyboolean“Only the bytes the dump holds, none from the module image.”offsetinteger“Byte offset into the read (a page's nextOffset).”maxTokensinteger
- list_globalsreads or searches
“Named data items of a native image outside code, from every name source (PDB with type and size, user names and types, Il2Cpp, NativeAOT, exports, symbol tables); with an engine also its defined data…”
Publisher declares: read-only yes · open-world yes
7 inputs, 1 required
imagestringrequired“Native image id, file name or path.”filterstring“Name substring (case-insensitive).”sectionstring“Only this section, e.g.”offsetintegerlimitinteger“Max rows (default 200).”enginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”maxTokensinteger
- export_engine_databasecreates or changes datadescribed as changing data
“Write a native image's engine database (analysis plus names, comments and types pushed from here) for the engine's GUI: IDA a compressed .i64, Ghidra a packed .gzf; Ghidra's own types also as .h or .…”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
4 inputs, 2 required
imagestringrequired“Native image id, file name or path.”outputPathstringrequired“The .i64 (IDA), .gzf, .h or .gdt (Ghidra) file to write.”overwriteboolean“Replace outputPath if it exists.”enginestring“Default: the extension's engine, else IDA.”
“Find a number (magic, opcode id, flag, crypto constant) in IL literals, const and enum values, attribute arguments and static arrays (read as their element type).”
Publisher declares: read-only yes · open-world no
5 inputs, 1 required
valuestringrequired“Decimal, 0x hex, negative or floating-point.”assemblystring“Assembly id, name or path; omit for all loaded.”limitintegermaxTokensintegeroffsetinteger
- comment_nativecreates or changes datadescribed as changing data
“Comment a native address (undoable, pushed to engines).”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
10 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”textstring“The comment text; empty to clear it.”scopestring“See the description; default auto.”appendboolean“Add text as a new line of the existing comment; a line it has is skipped.”repeatLineboolean“With append: add the line even when the comment has it.”itemsstring“Lines 'address = text', or JSON [{address, text, scope?, append?}].”dryRunboolean“Default true: preview; pass dryRun=false to apply.”stopOnErrorboolean“Stop at the first failing item.”enginestring“Engine to push to now (default: one with this image open, else at its next use).”
- dump_stackreads or searches
“Call stack of a minidump thread: x64 unwind data, x86 call targets and EBP chain; JIT code without unwind data adds scanned frames.”
Publisher declares: read-only yes · open-world no
9 inputs, 1 required
dumpstringrequired“A .dmp path or the id open_minidump returned.”threadstring“Thread id, '#index', name or 'exception' (default: faulting thread, else first).”dumpTimeContextboolean“Faulting thread: its context at dump time, not the exception context (.ecxr).”maxFramesinteger“Max frames walked (up to 1024).”offsetintegerlimitintegerimageDirectoriesstring“Program binary folders (';'-separated), kept for the dump, plus its own folder.”managedstring“auto: .NET frames through the DAC; off: native walk only.”maxTokensinteger
“Decompile an assembly into a C# project on disk (.cs per type, .csproj, resources) to browse with file tools; an .apk / .aab gives a Gradle project (manifest, resources, Java through JADX or smali).”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
3 inputs, 2 required
assemblystringrequired“Assembly id, name or path.”outputDirectorystringrequired“Empty or new output directory.”overwriteboolean“Replace a previous export in outputDirectory.”
- find_call_pathsreads or searches
“How execution reaches a method: call chains from 'from', or from entry points (methods nothing loaded calls), shortest first, direct calls preferred.”
Publisher declares: read-only yes · open-world no
8 inputs, 1 required
tostringrequired“Target.”fromstring“Start method, same forms as to (native only when to is native).”maxDepthinteger“Max chain length (max 30).”limitintegermaxTokensintegeroffsetintegerdirectOnlyboolean“No hops through virtual dispatch (native: RTTI virtual calls, pointers).”assemblystring“Assembly id, name or path; omit for all loaded.”
- disassemble_dexreads or searches
“Smali (baksmali layout) of a DEX method or class (a class lists its method ids and sizes first); format=annotated adds code offsets.”
Publisher declares: read-only yes · open-world no
6 inputs, 2 required
pathstringrequired“An Android package, .dex, jar or .class.”symbolstringrequired“Method (Lpkg/C;->m(I)V, pkg.C::m, pkg.C::m(int)) or class (pkg.C, Lpkg/C;).”formatstring“Output layout (default smali).”offsetintegermaxTokensintegermappingstring“R8 / ProGuard mapping.txt: shows and accepts original names; kept per package.”
- set_native_typecreates or changes datadescribed as changing data
“Set the prototype of a native function ('int __fastcall Parse(Packet *p, int len)') or a global's type ('Handler *[8]') in the engine.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
8 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”typestring“C prototype for a function, C type for a global; empty to clear the user type.”itemsstring“Instead of address and type: lines 'address = type'.”renameboolean“Name the function as its prototype does.”guessboolean“Report the engine's guess at address without applying it.”showDecompilestring“The function's pseudocode after the edit (after) or its unified diff (diff).”enginestring“auto (default), ida or ghidra.”
- migrate_native_namescreates or changes datadescribed as changing data
“Copy the old build's names, comments and engine types to the new build's user annotations through the function match (map_address_between_builds).”
Publisher declares: read-only no · destructive no · idempotent yes · open-world no
11 inputs, 2 required
oldImagestringrequired“Older build: image id or path (load both; the second is app.dll#2).”newImagestringrequired“The newer build: native image id or path.”dryRunboolean“Default true: preview; pass dryRun=false to apply.”minTierinteger“Weakest match tier accepted: 1 (names, identical bytes) to 5 (all).”minScorenumber“Least mapping confidence accepted (0-1).”sourcesarray“Layers to copy (default user).”namesOnlyboolean“Names only, no comments.”codeOnlyboolean“Match functions by code only, not by names.”offsetintegerlimitintegermaxTokensinteger
- install_android_packagedescribed as changing data
“Installs an APK, a split set or a directory of APKs on a device in one session; failures come back by their INSTALL_FAILED_ code.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world yes
5 inputs, 1 required
pathstringrequired“An .apk, split set or folder of APKs.”keepInstalledboolean“Fail when the app is installed instead of replacing it.”downgradeboolean“Allow a lower version code.”grantPermissionsboolean“Grant all requested runtime permissions.”serialstring“Device serial; optional with one device ready.”
- get_r2r_codereads or searches
“Precompiled native code of a method in a ReadyToRun assembly (the shared framework too): entry, code ranges, fixup cells and x86 / x64 disassembly with cells named by what they resolve to; generics p…”
Publisher declares: read-only yes · open-world no
7 inputs, 1 required
methodstringrequired“Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”assemblystring“Assembly id, name or path; omit for all loaded.”instantiationstring“Only bodies whose name contains this text ('Int32', '__Canon').”maxBodiesinteger“Max bodies disassembled; the rest are listed with addresses.”maxInstructionsinteger“Max instructions per body.”offsetintegermaxTokensinteger
“Every usage of a symbol across loaded assemblies: a method's call sites (also through base / interface methods), a field's reads, writes and address uses, a type's every use (bases, signatures, local…”
Publisher declares: read-only yes · open-world no
7 inputs, 1 required
symbolstringrequired“Type or member ('Ns.Type::Method(int)', short name, token) or native export ('kernel32.dll!CreateFileW', 'native:<image>!<name|#ord|addr>').”assemblystring“Assembly defining the symbol, to disambiguate; all loaded ones are searched.”kindstring“Symbol kind; overrides: the method's overrides and implementations.”directOnlyboolean“Methods: no calls through base / interface declarations.”limitintegermaxTokensintegeroffsetinteger
- search_code_patternreads or searches
“Find a byte pattern with ??”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
patternstringrequired“Hex bytes with ??”imagesarray“Image ids or paths; omit for every loaded native image.”allSectionsboolean“Search every section, not only executable ones.”offsetintegerlimitintegermaxTokensinteger
“Loaded assemblies and native images: ids, versions, paths, Il2Cpp dummy / ReadyToRun / merged flags, unsaved edits; plus reference search directories.”
Publisher declares: read-only yes · open-world no
5 inputs
pathstring“Container file or Blazor _framework folder to list instead of the workspace.”filterstring“Id, name or path substring (case-insensitive).”offsetintegerlimitinteger“Rows per page (default 100).”maxTokensinteger
“What a native address is: RVA, VA, file offset, section, nearest export or import, name, source; Il2Cpp method or metadata slot; NativeAOT MethodTable, object or method; IAT slot's export, export's i…”
Publisher declares: read-only yes · open-world no
3 inputs, 1 required
imagestringrequired“Native image id, file name or path.”addressstring“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”addressesarray“Instead of address: up to 100 addresses.”
- get_il2cpp_inforeads or searches
“Native addresses (RVA, VA, file offset, vtable slot) of an Il2Cpp method or every method of a type, field offsets and tokens.”
Publisher declares: read-only yes · open-world no
5 inputs, 1 required
symbolstringrequired“Type or member ('Ns.Type::M(int)', short name, token) or script.json name ('List`1<int>::Add').”assemblystring“Assembly id, name or path; omit for all loaded.”slotstring“With a type: a vtable slot number to resolve to its method, or 'all'.”offsetinteger“Index of the first entry of each long list.”limitinteger“Max entries of each long list.”
- find_virtual_callsreads or searches
“Virtual call sites resolved through RTTI (MSVC, Itanium) or NativeAOT MethodTables: calls through a vftable slot, also via stack spills, this adjustments, CFG dispatch.”
Publisher declares: read-only yes · open-world yes
9 inputs, 1 required
imagestringrequired“Native image id, file name or path.”functionstring“Only sites in this function: Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”statusstring“Only sites with this status.”offsetintegerlimitinteger“Max sites (max 1000).”crossCheckboolean“Compare a sample with IDA (else Ghidra); minutes on a large image at first.”sampleFunctionsinteger“Cross-check: functions to sample.”timeoutSecondsinteger“Cross-check: time budget in seconds.”maxTokensinteger
- inspect_instructionreads or searches
“What is at an address of a native image, instruction by instruction (decoded, mid_instruction, data...).”
Publisher declares: read-only yes · open-world yes
6 inputs, 2 required
imagestringrequired“Native image id, file name or path.”addressstringrequired“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”limitinteger“Positions (1-64).”offsetintegermaxTokensintegerenginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”
- symbolize_stack_textreads or searches
“Resolves crash text against the loaded build: Unity Player.log / error.log, Mono and Il2Cpp lines, .NET exception text, Report.wer, Event Log 1000/1026, debugger stacks, Android tombstones.”
Publisher declares: read-only yes · open-world no
9 inputs
textstring“The crash text (up to 1 MiB).”pathstring“A log or report file; its last 8 MiB are read.”formatstring“Text format (auto detects it).”imagesstring“Native image ids or paths (';'-separated); default all loaded.”moduleBasesstring“Module load addresses, 'name=0xBASE;...', when the text has no module list.”offsetintegerlimitintegerallFramesboolean“One row per frame; default folds 3+ matching native frames of an image.”maxTokensinteger
- summarize_filereads or searches
“First look at a file or loaded assembly (never executed): type, hashes, signature, containers, assemblies, highlights (toolchain, capability features, packaging tools), entry points.”
Publisher declares: read-only yes · open-world no
7 inputs
pathstring“File (assembly, bundle, .nupkg, .apk, .ipa, zip, .asar, executable) or .app folder.”assemblystring“A loaded assembly; pass this or path.”viewstring“overview (default) or a view the overview lists.”tablestring“sqlite, sqlite-recover: the table to page.”columnsarray“With table=: these columns (rowid too).”offsetintegerlimitinteger
- list_dex_classesreads or searches
“Classes defined in an Android package's DEX code (every classes*.dex): descriptor, DEX file, access, superclass, interfaces, member counts, source file; unfiltered, the largest packages.”
Publisher declares: read-only yes · open-world no
7 inputs, 1 required
pathstringrequired“An Android package, a .dex, or a jar with classes*.dex.”querystring“Only classes whose name contains or matches (* ?) this.”packagestring“Only this package and its subpackages.”offsetintegerlimitinteger“Most classes.”maxTokensintegermappingstring“R8 / ProGuard mapping.txt: shows and accepts original names; kept per package.”
- search_containerreads or searches
“Find types and members by name in every managed assembly inside a container (bundle, .nupkg, .apk / .aab, Costura, zip, nested) or an assembly, without extracting: substring or * / ?”
Publisher declares: read-only yes · open-world no
8 inputs, 2 required
pathstringrequired“Container or assembly file (absolute).”querystringrequired“Name or part of a name.”kindstring“Restrict to this kind; omit for all members (events included).”limitintegermaxTokensintegeroffsetintegercapturestring“kind=endpoint: a HAR, mitmproxy, .saz or pcap capture to join, or to compare when path is a capture.”valuesboolean“kind=request: show header, cookie and query values.”
- export_editscreates or changes datadescribed as changing data
“Save an assembly's edits as a JSON script bound to its build (SHA-256, MVID) for apply_edits.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
3 inputs, 2 required
assemblystringrequired“Assembly id, name or path.”outputPathstringrequired“Output .json path.”overwriteboolean“Replace outputPath if it exists.”
- live_coveragedescribed as changing data
“Collect code coverage in a session: which functions of an image ran and how often, drawn on the static call graph; diff compares two runs.”
Publisher declares: read-only no · destructive no · idempotent no · open-world yes
10 inputs
sessionstring“Session id; start only.”actionstring“start, stop, list, report or diff.”runstring“Coverage run id (cov-1); diff: the first run.”otherstring“diff: the run compared with.”matchstring“Only functions whose name contains this; start: module!part for another module.”hitLimitinteger“start: stops counted per function before its point is cleared.”showstring“report: ran, missed or all.”formatstring“report: text, or dot (call graph; offset counts characters).”offsetintegerlimitinteger
“Undo the last edit or one by number: the others are replayed on the original image; a conflict changes nothing.”
Publisher declares: read-only no · destructive yes · idempotent no · open-world no
2 inputs, 1 required
assemblystringrequired“Assembly id, name or path.”numberinteger“Edit number from list_edits (the #n of its editId); omit for the last.”
- diff_functionreads or searches
“What changed in one function between two builds.”
Publisher declares: read-only yes · open-world yes
14 inputs
oldImagestring“Older build: image id or path (load both; the second is app.dll#2).”newImagestring“The newer build: native image id or path.”addressstring“In the function: Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”addressesarray“Instead of address: up to 20 functions, one summary each.”sidestring“Which build the address is in.”viewstring“asm, or pseudocode (needs an engine).”contextinteger“Unchanged rows or lines around each change (0-50).”codeOnlyboolean“Match functions by code only, not by names.”enginestring“view=pseudocode: auto, ida or ghidra.”offsetintegerlimitintegermaxTokensintegeroldResultstring“Instead: old code as a kept result (r-…), last:N (a recent call) or a bundle entry (file.json#r-…).”newResultstring“New code, from the same tool.”
- verify_native_importsreads or searches
“Check imports against library exports.”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
assemblystringrequired“Assembly id, name or path.”statusstring“Only this verdict or reason (contradicted, missing_export...).”offsetintegerlimitinteger“Max rows (default 100, max 5000).”platformstring“Target platform (default auto).”maxTokensinteger
“Read a kept result (resultId; kept on disk 7 days): page it, search it with query, or write it whole to outputPath.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
8 inputs, 1 required
idstringrequired“Result id, e.g.”offsetinteger“Character offset (nextOffset).”maxTokensinteger“Page size in tokens (default 6000).”querystring“Only lines containing this text (/regex/ for a pattern), with their offsets.”formatstring“text; json: the structured record; jsonl: its items, one per line.”outputPathstring“Write the whole result to this file; returns path, bytes and SHA-256.”overwriteboolean“Replace outputPath if it exists.”againststring“format=verify: compare with this, not a re-run: a kept result (r-…), last:N (a recent call) or a bundle entry (file.json#r-…).”
- convert_numbercalculates or converts
“Exact number conversions instead of mental arithmetic: signed and unsigned decimal, hex, binary and octal at a width, LE and BE bytes and their ASCII, the bits as float or double.”
Publisher declares: read-only yes · open-world no
2 inputs, 1 required
numbersarrayrequired“Numbers to convert.”sizeinteger“Width in bytes: 1, 2, 4 or 8 (default: the smallest that fits).”
- set_native_localcreates or changes datadescribed as changing data
“Rename and/or retype a local or argument in a native function's pseudocode, named as decompile_native shows it (v3, a1) or stack:0x28.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
11 inputs, 2 required
imagestringrequired“Native image id, file name or path.”functionstringrequired“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”localstring“The variable: its name in the pseudocode, or stack:<offset> (hex).”newNamestring“New name (a C identifier).”typestring“New C type.”clearboolean“Drop the user's name and type of the variable.”itemsstring“Instead: lines 'local = newName' or JSON [{local, newName?, type?, clear?}].”showDecompilestring“The function's pseudocode after the edit (after) or its unified diff (diff).”enginestring“auto (default), ida or ghidra.”inferStructstring“Ghidra: declare this struct from the local's accesses; the local points to it.”storagestring“Move an argument to this register, or auto: the convention's place.”
- list_native_typesreads or searches
“Named types of the engine's database (PDB, RTTI, Il2Cpp, type libraries, declare_native_types) with size and member count; name= shows one type as a C declaration with member offsets.”
Publisher declares: read-only yes · open-world yes
12 inputs, 1 required
imagestringrequired“Native image id, file name or path.”filterstring“substring (case-insensitive), glob with * and ?, or /regex/ (flags i, m, s).”kindstring“udt: struct or union.”namestring“Show this one type in full instead of a list.”offsetintegerlimitinteger“Max rows (max 5000).”maxTokensintegerenginestring“auto (default), ida or ghidra.”sortstring“name (default), size, or ordinal (the engine's order).”descendingboolean“Reverse the order.”membersboolean“List each type's first 32 members (enums: name = value).”relatedboolean“Add the types each one refers to.”
“Write an assembly with its edits to a new file, atomically (overwrite=true keeps a .bak; a file changed since load is refused).”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
4 inputs, 1 required
assemblystringrequired“Assembly id, name or path.”outputPathstring“Output path (.wasm writes Webcil for Blazor); default '<original>.patched.dll'.”overwriteboolean“Allow replacing an existing file.”strictboolean“Write nothing if the writer would change any member (default: save and list them).”
- unpack_containerreads or searches
“Extract the .NET assemblies inside a container and load them: single-file bundles, Costura.Fody, .nupkg, Xamarin / MAUI .apk / .aab (per ABI), zips, embedded .NET images, nested containers; Electron …”
Publisher declares: read-only no · destructive no · idempotent yes · open-world no
6 inputs, 1 required
pathstringrequired“Container file, or a Blazor _framework folder.”outputDirectorystring“New or empty directory, or an earlier extract of this file; default under temp.”extractOnlyboolean“Extract without loading the assemblies; default: loaded, ids in loadedAs.”offsetintegerlimitintegerkeyLogstring“A pcap's TLS key log (SSLKEYLOGFILE) to decrypt with.”
- find_counterpartreads or searches
“Where a type or member of the old build went in the new one (by name, then content, unique-only; else candidates): new name and token, tier, confidence, body change.”
Publisher declares: read-only yes · open-world no
9 inputs, 3 required
symbolstringrequired“Old build: Type or member: 'Ns.Type', 'Ns.Outer+Inner', 'Ns.Type::Method(int, string)', a short name or a token (0x06000123).”oldAssemblystringrequired“The old build (id, name or path).”newAssemblystringrequired“The new build (id, name or path).”diffboolean“C# diff of each pair (cut at 300 lines).”ilboolean“Normalized IL diff of each method pair.”symbolsarray“Instead of symbol: up to 100 symbols.”offsetintegerlimitinteger“Symbols per page (default 25).”maxTokensinteger
- decompile_javareads or searches
“Java source of a class or method of an Android package or a jar through JADX (CORVUS_JAVA_DECOMPILER, JDK 17+), or of a jar or .class through Vineflower (engine=vineflower, CORVUS_JAVA_DECOMPILER2).”
Publisher declares: read-only yes · open-world yes
7 inputs, 2 required
pathstringrequired“An .apk, .aab or split set, a .dex, a jar or a .class.”symbolstringrequired“Class (pkg.C, Lpkg/C;) or method (Lpkg/C;->m(I)V, pkg.C::m, pkg.C::m(int)).”javaOnlyboolean“Partial Java where JADX fails; default: smali there.”enginestring“jadx (default) or vineflower (class files only).”offsetintegermaxTokensintegermappingstring“R8 / ProGuard mapping.txt: shows and accepts original names; kept per package.”
- unity_overviewreads or searches
“Overview of a Unity title in seconds, without loading it: engine version per source, scripting backend (il2cpp / mono) with evidence, metadata version and state (readable, encrypted, header_tampered,…”
Publisher declares: read-only yes · open-world yes
2 inputs, 1 required
pathstringrequired“Game folder, executable, *_Data, GameAssembly, global-metadata.dat, .apk, .ipa, zip, WebGL, .app.”detectItEasyboolean“Also run Detect It Easy (CORVUS_DIE or PATH) on the main binaries; ~1 s per file.”
- define_nativecreates or changes datadescribed as changing data
“Redefine an address in the engine by kind: code (to end, else along the flow), function (make one to end, or move a function's end), undefine (to end, else the item or function), data (of type), flow…”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
6 inputs, 3 required
imagestringrequired“Native image id, file name or path.”addressstringrequired“Hex VA or RVA (rva:/va:/off: prefix), export, module!import or function name.”kindstringrequired“What to make.”endstring“Exclusive end address (same forms as address).”typestring“kind=data: byte, word, dword, qword, float, double, string, string16 (UTF-16) or a C type; dword[8] arrays.”enginestring“auto (default), ida or ghidra.”
- search_pdb_symbolsreads or searches
“Symbols of the PDB or DWARF loaded for a native image (load_pdb, or found automatically): address, kind, size, name, signature (undecorated or demangled), and object file or unit.”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
imagestringrequired“Native image id, file name or path.”querystring“Name or decorated name substring (case-insensitive); empty for all.”kindstring“Only this kind (default all).”offsetintegerlimitinteger“Max rows (default 150).”maxTokensinteger
“Read a resource: text as text, binary as hex preview, .resources as an entry list (entry reads one; .baml as XAML); outputPath extracts the raw bytes.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
7 inputs, 2 required
assemblystringrequired“Assembly id, name or path.”namestringrequired“Name from list_resources.”entrystring“Entry inside a .resources container.”outputPathstring“Write the raw bytes to this file.”overwriteboolean“Replace outputPath if it exists.”offsetintegermaxTokensinteger
- uninstall_android_packagedeletesdescribed as changing data
“Remove an app (and its data unless keepData) from a device; needs the server option --allow-device-changes.”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world yes
3 inputs, 1 required
packagestringrequired“Package name, e.g.”keepDataboolean“Keep the app's data and cache.”serialstring“Device serial; optional with one device ready.”
- search_ilreads or searches
“Find methods containing an IL instruction sequence: ';'-separated 'opcode [operand]' elements with * and ?”
Publisher declares: read-only yes · open-world no
6 inputs, 1 required
patternstringrequired“Instruction pattern.”assemblystring“Assembly id, name or path; omit for all loaded.”limitintegermaxTokensintegeroffsetintegercontextinteger“Instructions shown per match (1-24).”
- save_nativecreates or changes datadescribed as changing data
“Write the patched native image to a new file: unpatched bytes identical, PE checksum recomputed, a signature invalidated (stripSignature removes it).”
Publisher declares: read-only no · destructive yes · idempotent yes · open-world no
4 inputs, 2 required
imagestringrequired“Native image id, file name or path.”outputPathstringrequired“Output file path.”overwriteboolean“Allow replacing an existing file.”stripSignatureboolean“Remove the Authenticode certificate table from the output.”
- get_android_device_inforeads or searchesdescribed as changing data
“Device properties (getprop) with a summary: SDK, release, model, ABIs, fingerprint, patch level, build type, ro.debuggable, ro.secure, emulator; view=: processes, features, services, settings, files,…”
Publisher declares: read-only no · destructive no · idempotent no · open-world yes
6 inputs
serialstring“Device serial; optional with one device ready.”querystring“Name or value filter; view=files: directory (default /data/local/tmp); window: local APK.”offsetintegerlimitinteger“Most rows.”viewstring“What to read (default props).”outputPathstring“view=screen: new PNG path; view=bugreport: new or empty directory; default under temp.”
- search_native_stringsreads or searches
“Strings (ASCII and UTF-16) a native image's code or data references, with address, reference count and first referencing function.”
Publisher declares: read-only yes · open-world yes
8 inputs, 1 required
imagestringrequired“Native image id, file name or path.”querystring“Case-insensitive substring, or a regex with regex=true; omit to list all.”regexboolean“Treat query as a regular expression.”offsetintegerlimitintegerenginestring“auto (default): IDA, else Ghidra, if it analyzed these bytes, else ours; or ida / ghidra.”maxLengthinteger“Characters per string (max 4000); longer ones are clipped.”maxTokensinteger
Each quoted sentence is the first sentence of the publisher’s own description. The kind of tool and the “changes data” mark are our AI model’s reading of that description, not something we tested: two differently worded runs had to agree, otherwise no label is shown, and nobody has checked them by hand. A tool without the “changes data” mark is described as only reading, searching or calculating, or the two runs did not agree. No tool was called. Read the publisher’s full description before relying on it. “Publisher declares” lists the hints the server itself sends with the tool (MCP annotations: read-only, destructive, idempotent, open-world); they are the publisher's claims, not checked by us. Inputs are the parameters in the tool's own input schema: name, declared type, whether it is required, and the first sentence of its description. The first 100 of 165 tools are listed. Read 2026-10-23.
How well are its tools described?
Features #4 and #5
How clearly this server's own tool descriptions say what a tool does, and how consistent its tool list is. The first part is an AI model's yes/no reading of each description; the second part is counted. We do not turn it into a grade.
Descriptions
AI reading of each description
- Says what the tool does
- 100% of 120 tools
- Says what it returns
- 78% of 116 tools
- States limits, defaults or errors
- 60% of 108 tools
- Says when to use it
- 0% of 120 tools
- Items covered per tool
- 2.4 of 4 on average
Counted from the listing
- Parameters with a description
- 81% of 1,123
- Tools with a description
- 100% of 165
- Typical description length
- 259 characters
The tool set
Counted from the listing
- Tools
- 165
- Size of the list
- about 78,049 tokens for an agent to load (characters ÷ 4)
- Naming
- 164 of 165 names use snake_case
AI reading: easy to mix up
No pair found.
The AI items cover 120 of 165 tools: for a tool where two differently worded runs disagreed, that item is left out. They were not checked by hand, and no tool was called. “Easy to mix up” means two tools whose names or descriptions overlap without saying how they differ; the AI found none, comparing tools within groups of 40. We do not rate whether the tool set is complete or whether side effects are spelled out, because our AI reading of those was not reliable enough.
How do I add it to my client?
Config from the registry entry
- No config: no ready-made command for the NuGet package; use the publisher's instructions.
Built from the server's registry entry with each client's documented format (checked 2026-10-14; the Cursor link and the VS Code command 2026-10-19; the MCP Inspector command 2026-10-21). Values in < > are yours to fill in; this page never contains a key. Where the server needs a setting the entry does not declare, it can still fail to start.
Does the registry listing match what we found?
Feature #6The registry verifies a package once, when it is published, and does not re-check it. A difference below is about the listing, not a judgement of the publisher.
| Registry says | We found | Result | Source · date |
|---|---|---|---|
| Published package can be started | Started and answered | matches | our test · 2026-10-23 |
| Repository github.com/Albasha0x0/Corvus | Opens publicly | matches | api.github.com · 2026-10-22 |
Who made it?
Feature #7 · lineage
Facts about the publisher. We do not turn them into a trust score.
- Namespace
- io.github.Albasha0x0
- GitHub owner
- a personal account (Albasha0x0)
- Repository
- github.com/Albasha0x0/Corvus
- Stars
- 8
- Repository age
- 0–30 days
- Last push
- 0–30 days ago
- Archived
- no
- Security policy
- SECURITY.md
Source: the registry entry and api.github.com · 2026-10-22; security policy read from GitHub · 2026-10-23.
Publish this server? Run these checks against it yourself before release, from your own machine: a server the command starts, or your own server at its URL after a one-time proof that you control it: npx protocolprobe-selftest.
Choosing
Record checks
Public records · not a safety rating5 of 5 record checks met · 4 do not apply
- Not ranked by downloads: not an npm or PyPI package
- Not ranked by stars: 8 stars (ranked from 10)
- MetRegistry entry is active and says how to run itActive, with a package or a remote address.
- MetSource repository link opensThe linked GitHub repository is public.
- MetRepository is not archivedNot archived.
- MetCode pushed to the repository in the 90 days before our checkLast push 0-30 days before our check.
- MetRepository publishes a security policy (SECURITY.md)SECURITY.md found.
- Does not applyPackage names its licence with a standard (SPDX) identifierNot an npm or PyPI package.
- Does not applyThe version the registry lists can be installed and is not withdrawnNot an npm or PyPI package.
- Does not applynpm package carries build provenance (attestation)PyPI packages have no npm-style attestation.
- Does not applyNo known critical or high advisory in the package or its dependenciesNot an npm or PyPI package.
Read from public records only: the registry entry, npm/PyPI, GitHub and advisory databases, checked 2026-10-22. No tool was called. Only “met” and “not met” are counted, so the total differs between servers; a check that does not apply or that we could not run is listed, never counted against it. It is not a safety rating. How each check works · Leaderboards
Common questions about io.github.Albasha0x0/corvus
Answered from the data aboveIs io.github.Albasha0x0/corvus safe to install?
We do not rate servers as safe or unsafe. 5 of its 5 applicable record checks are met (facts from public records, each listed on this page). What the records show: Its source repository opens publicly. Its repository had a push in the last 90 days. 45 of its tools describe changing data (our AI model's reading of the descriptions). These are facts with their sources on this page, not a safety guarantee, and we did not run its tools.
Has io.github.Albasha0x0/corvus been security tested?
Partly. 4 of the 13 checks that apply to it were exercised. We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security verdict is published before verification.
What can io.github.Albasha0x0/corvus do?
It lists 165 tools. In our AI model's reading of their descriptions (two runs had to agree, nobody checked it by hand), they include tools that read or search, create or change data, delete, run code or commands, generate content and calculate or convert and more. We did not call any tool, so this describes the text, not the behaviour.
Can io.github.Albasha0x0/corvus change or delete data?
45 of its tools say in their description that they create, edit, delete, send or run something (our AI model's reading). We did not call any tool, so we cannot say what actually happens.
Does io.github.Albasha0x0/corvus publish a security policy?
Yes: its repository has a public security policy (github.com/albasha0x0/corvus/blob/HEAD/SECURITY.md). That is the publisher's statement, not permission for us to test the server, and we call none of its tools.
Where is the source code of io.github.Albasha0x0/corvus?
In github.com/Albasha0x0/Corvus, which opens publicly.
Found this page useful?
Anonymous · no sign-inA quick, anonymous reaction — no account, no email. One per kind from your browser. The tally updates when the page is next refreshed, and it is only a rough count, never a safety rating or a measured number of people.
Similar servers
Same topic · AI-read
- io.github.kivanccakmak/yaverYaveralso has tools that calculates or converts, creates or changes data, deletes, runs code or commands, generates content, does something else, reads or searchescompare with this one
- io.github.yaver-io/yaverYaveralso has tools that calculates or converts, creates or changes data, deletes, runs code or commands, generates content, does something else, reads or searchescompare with this one
- ai.rokha/rokhaRokhaalso has tools that calculates or converts, creates or changes data, deletes, runs code or commands, generates content, does something else, reads or searchescompare with this one
- io.github.tomyud1/godot-mcpalso has tools that calculates or converts, creates or changes data, deletes, runs code or commands, generates content, reads or searchescompare with this one
- io.github.IMNMV/clauderClaudeR - RStudio MCP Serveralso has tools that creates or changes data, deletes, runs code or commands, generates content, does something else, reads or searchescompare with this one
- io.github.SummerEngine/summerSummer Enginealso has tools that creates or changes data, deletes, runs code or commands, generates content, does something else, reads or searchescompare with this one
Active servers whose topic is also “developer-tools” and that have at least one tool of the same kind; most kinds in common first, then most GitHub stars. The topic and the tool kinds are an AI model's reading of the publishers' descriptions, not checked by hand. Similar is not a recommendation.
Compare with another server
Side by side: registry entry, our read-only session, the tools and the 18 classification fields. Same values as each page; no score.
Security testing
What did we test, and what did we leave out?
18 checks · features #1, #2
Not probed (read-only run)
We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security score is given; a check we did not run is never counted as passed.
- Inventory: exercised
- Hidden instructions: exercised
- Real execution: not run · our policy
- Secret leak: not run · nothing to check it against
- Internal addresses: not run · our policy
- Unconfirmed changes: not run · our policy
- Bad input: not run · our policy
- Model requests: not run · nothing to check it against
- Sensitive questions: not run · nothing to check it against
- Folder boundary: not run · our policy
- Log leaks: not run · nothing to check it against
- Hidden content: exercised
- Fake assistant turns: exercised
- Token passthrough: not applicable
- Token audience: not applicable
- Sign-in redirect: not applicable
- Consent handling: not applicable
- Sign-in metadata: not applicable
4 exercised9 not run (reason given)5 not applicable
Each check ends in exactly one state: exercised, not run (with the reason), or not applicable (with the reason). 4 of the 13 checks that apply to it were exercised. We do not publish security-check outcomes for named servers.
- 1Inventory
tool-listReads the declared tools, resources and prompts.exercised - 2Hidden instructions
description-poisoningLooks for hidden instructions in tool descriptions.exercised - 12Hidden content
audience-hidingChecks resources that hide content from the user.exercised - 13Fake assistant turns
fake-assistant-turnChecks prompts that pose as the assistant's own words.exercised
- 3Real execution
real-executionCalls a tool and checks what really happens.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 4Secret leak
canary-leakPlants a fake secret and checks whether it leaks.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 5Internal addresses
ssrfChecks whether a tool can be steered to internal addresses.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 6Unconfirmed changes
write-without-confirmationChecks whether tools that change data act without asking.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 7Bad input
error-handlingSends bad input and watches how the server answers.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 8Model requests
samplingChecks whether the server asks the client's model to act for it.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 9Sensitive questions
elicitation-sensitive-dataChecks whether the server asks users for sensitive data.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against - 10Folder boundary
root-boundaryChecks whether the server reaches outside the folders it was given.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy - 11Log leaks
logging-side-channelChecks whether log messages carry data they should not.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
- 14Token passthrough
token-passthroughChecks whether the server forwards a user's token to other services.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 15Token audience
token-audience-validationChecks whether tokens meant for another service are accepted.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 16Sign-in redirect
open-redirectChecks the sign-in redirect for abuse.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 17Consent handling
confused-deputyChecks consent handling when one service acts for another.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable - 18Sign-in metadata
oauth-url-schemeChecks the published sign-in metadata for unsafe URLs.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
Source: our own test in an isolated sandbox, 2026-10-23, mcp-runtime-engine@0.1.0. Which checks count and why follows our published scoring model.
What happened during the test?
Feature #8
The steps in order, as the test record holds them.
- 0 msStarted the published package in an isolated sandbox (read-only mode)
- 4,673 msConnected after 0 redirects.
- Read the inventory: 165 tools, 1 resource, 15 prompts.
- 6,050 msFinished: 4 checks exercised.
Reference
How is it classified?
18 fields
One value per field, each with its source. Fields written by AI models are marked. A field with no value says why.
“Not stated” means the source did not state it; “does not apply” means it does not apply to this kind of server; “our limit” means our own lookup failed. A linked value opens the directory filtered to the same value.
Cite or correct this page
Sources and corrections
Suggested citation
ProtocolProbe. “io.github.Albasha0x0/corvus: MCP server record.” Data checked 2026-10-23. https://protocolprobe.com/mcp/servers/io.github.Albasha0x0/corvus
Figures are valid for the date shown. Our facts on this page are CC BY 4.0: reuse them with a link and the check date. Quoted text (the publisher’s descriptions, website quotes, tool names) is not ours to license.
As JSON: this record in the API · API documentation.
Badge for your README
[](https://protocolprobe.com/mcp/servers/io.github.Albasha0x0/corvus)
It shows this server's record-check count: facts from public records, no tool called. It is not a security rating or a pass. It links here and updates after each data reload.
Something wrong, or is this yours?
If a fact here is wrong, tell us and we will re-check it. If you operate this server, you can run our checks on it yourself with the free self-test command; we call no server’s tools ourselves for anything shown here.
Write to hello@protocolprobe.com · corrections log · methodology