Skip to main content
Glama
Nizoka

zipnative-mcp

Inspect archive (facts, determinism verdict, CI checks)

inspect_zip
Read-onlyIdempotent

Inspect a ZIP archive in a single call to retrieve comprehensive metadata, integrity diagnostics, and determinism checks without extracting files.

Instructions

Read-only archive report in ONE call: size, entry / file / directory counts, Zip64, comment, compressed vs uncompressed totals, per-method counts, encrypted / symlink / data-descriptor / Zip64 / cp437 / duplicate / unsafe-name counts, date range, a determinism verdict (epoch timestamps + canonical order + UTF-8 flags ⇒ reproducible; canonicalLayout = no data descriptors) and every engine diagnostic (prepended SFX data, name mismatches, …). Opens EAGERLY by default: every entry's real extent is checked up front — overlapping entries, entries reaching into the central directory or past EOF, and Zip64 spoofing — and refused with their ZIP_* code rather than summarised (a method / CRC / size divergence between central and local headers is caught by verify_zip and on read, not here). check:[…] / assert:{…} turn it into a CI gate → checks[] + checksPassed. Token-frugal: verbosity:'summary', fields:[…]. Input: zipBase64 or zipPath (sandbox).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
checkNoCI assertions evaluated over the report: deterministic, epoch-timestamps, canonical-order, utf8-names, no-data-descriptor, canonical-layout, no-zip64, zip64, no-encryption, no-symlinks, safe-names, no-duplicates, no-diagnostics, store-only, deflate-only. Result: `checks[]` + `checksPassed`.
assertNoParametrised assertions (each becomes a `checks[]` row).
fieldsNoDot-path projection applied after verbosity (e.g. ['entryCount', 'entries.name']); array segments map over elements; unmatched paths are reported in _meta.unmatchedFields.
limitsNoOverride zipnative's named security bounds for this call (CWE-400 / CWE-409 guards). Every key is optional; absent keys keep the engine defaults (maxEntries 100000, maxEntryUncompressedSize 1 GiB, maxTotalUncompressedSize 8 GiB, maxCompressionRatio 1024, maxNameBytes 4096, maxExtraFieldBytes 65535, maxCommentBytes 65535, maxCentralDirectoryBytes 256 MiB). Values above the operator ceilings (ZIPNATIVE_MCP_MAX_UNCOMPRESSED_BYTES, ZIPNATIVE_MCP_MAX_ENTRIES) are refused with LIMIT_CEILING_EXCEEDED. Raise a bound for trusted input only.
strictNoEscalate the first engine diagnostic (prepended data, duplicate name, name mismatch, …) to a ZIP_STRICT_DIAGNOSTIC error instead of reporting it.
zipPathNoRelative path of an archive inside the ZIPNATIVE_MCP_OUTPUT_DIR sandbox (no absolute paths, no '..'; container extensions only: .zip .jar .docx .epub …). Exclusive with zipBase64. Lets a create/modify → verify/extract chain avoid re-sending the bytes.
validateNo'eager' (default) cross-checks every local header and the overlap table up front — hostile shapes are refused here; 'lazy' defers to first read (cheaper on huge archives).eager
verbosityNo'summary' returns only the scalar verdict fields (drops arrays and payloads) — the token-frugal form.full
zipBase64NoThe archive bytes as base64 (exactly once; a data: URI prefix is tolerated). Exclusive with zipPath. Decoded size ≤ 128 MiB.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
ratioNo
checksNo
commentNoArchive comment (UTF-8, lossy).
isZip64NoA Zip64 end-of-central-directory record is present.
methodsNo
fileCountNo
commentHexNo
entryCountNo
latestDateNo
determinismNo`deterministic` = reproducible (epoch timestamps + canonical order + UTF-8 flags); `canonicalLayout` = the buffered layout (no data descriptors) — a streamed archive is reproducible but not canonical.
diagnosticsNoNon-fatal conformance concerns the engine raised while parsing or writing (de-duplicated by code + entry, at most 200). Empty for a clean archive. Codes: ZIP_PREPENDED_DATA, ZIP_MULTIPLE_EOCD, ZIP_NAME_MISMATCH, ZIP_UNICODE_PATH_CONFLICT, ZIP_INVALID_UTF8_NAME, ZIP_DUPLICATE_NAME, ZIP_EXTRA_FIELD_MALFORMED, ZIP_ZIP64_EXTRA_IGNORED, ZIP_TIMESTAMP_NOT_PINNED, ZIP_NONDETERMINISTIC_CODEC, ZIP_DEAD_BYTES_RATIO.
archiveBytesNo
checksPassedNoPresent when check / assert was supplied: true when every assertion holds.
commentBytesNo
earliestDateNo
multipleEocdNo
symlinkCountNo
deterministicNosummary only: the determinism verdict.
prependedDataNoSFX-style prefix before the first local header (offsets shifted).
utf8NameCountNo
cp437NameCountNo
directoryCountNo
encryptedCountNo
canonicalLayoutNosummary only: buffered (no data descriptor) layout.
compressedBytesNo
diagnosticCountNosummary only: number of distinct diagnostics.
unsafeNameCountNoNames sanitizeEntryPath() refuses (traversal, absolute, drive/UNC, NUL, ADS, device names).
zip64EntryCountNo
diagnosticCountsNoNumber of diagnostics received per code (counts every occurrence, including de-duplicated ones).
uncompressedBytesNo
duplicateNameCountNo
dataDescriptorCountNo
diagnosticsTruncatedNoPresent (true) when more than 200 distinct diagnostics were dropped from `diagnostics`.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.0.0

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail: eager vs. lazy validation, refusal with ZIP_* codes, escalation via strict, and the fact that certain checks are deferred to verify_zip. It even discloses that hostile shapes are refused here. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph but well-organized: purpose first, then outputs, then behavior, then CI/usage, then input. Every sentence contributes new information without fluff. While not short, it is appropriately detailed for a complex tool with 9 parameters and nested objects. The front-loading of the core purpose aids quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool of this complexity, the description covers essential aspects: the eager validation behavior, the check/assert mechanism, the token-frugal modes, input options (base64 vs path), strict escalation, and security limits. Since an output schema exists, the description need not detail return structure, but it does mention checks[] and checksPassed. Nothing critical for an agent to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds meaningful context for key parameters: check/assert as a CI gate, verbosity/fields for token frugality, and validate's eager default. It does not repeat schema details but explains their purpose, which adds value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read-only archive report in ONE call' followed by a detailed enumeration of outputs (size, counts, Zip64, determinism verdict, diagnostics). It explicitly distinguishes from verify_zip by stating which divergences are NOT caught here. This makes the tool's purpose unambiguous and differentiated from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (for a comprehensive read-only report and CI gating via check/assert) and explicitly notes that method/CRC/size divergences are handled by verify_zip. It also mentions the create/modify → verify/extract chain, implying usage in that flow. However, it doesn't explicitly say 'use this instead of X when...' for all alternatives, but the main alternative (verify_zip) is covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nizoka/zipnative-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server