tiny-context — efficient file tools by AVRG3
MCPB · TINY-CONTEXT-0.3.0-WIN32.MCPB · 3 COMPONENTS
Local document queries, saved extraction profiles, spreadsheet SQL, logs and keyed JSON changes.
Last scanned (23 hours ago)
Scores higher than 80% of MCPB servers
Category Documents and Files
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 34 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3918 tokens (~489/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −2
- Stability: pass → 0.87 functional
- 29 Oct 26 +1
- Stability: 0.97 → pass security
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed mcpb/https://github.com/Warddamn/tiny-tools/releases/download/context-v0.3.0/tiny-context-0.3.0-win32.mcpb
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
diff_files Compare documents or keyed JSON records ~702
Compare two files and report what changed — works outside git and on PDF/DOCX/PPTX/XLSX/CSV (tables get added/removed/changed row counts + samples; documents diff on extracted text). USE WHEN: "what changed between v1 and v2", "compare these spreadsheets", or "which orders/issues/inventory records changed between two API exports despite shuffled rows" (records mode, explicit key). PREFER OVER: reading both files and comparing in your head; git diff when the files aren't in git or aren't plain text. git diff is fine for tracked plain-text files. DOES NOT: fetch snapshots, infer IDs, remember prior calls, diff directories, merge, or interpret semantic meaning. Records mode supports JSON/JSONL/NDJSON only: 16 MiB and 100000 records per file, nesting 64; rejects duplicate IDs/object keys and numbers that would round. Quote high-precision numbers. Nested array order remains significant. EXAMPLE: diff_files({ a: "/abs/v1/report.docx", b: "/abs/v2/report.docx" }) · diff_files({ a: "/abs/a.csv", b: "/abs/b.csv", mode: "summary" }) Records EXAMPLE: diff_files({ a: "/abs/yesterday.json", b: "/abs/today.json", mode: "records", key: ["/id"], fields: ["/status", "/price"] }) RETURNS: summary/unified: capped sections or diff. records: exact added/removed/changed/unchanged counts within the declared fields, bounded before/after previews and an optional full JSONL report. Capped previews are labeled. Savings line compares response bytes against both whole inputs, not billed tokens or an optimized script.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | First file (the 'before'). Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/v1/contract.docx'. Required. |
| b | string | yes | Second file (the 'after'). Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/v2/contract.docx'. Required. |
| fields | array | – | records mode only: compare these field JSON Pointers, e.g. ['/status','/price']. Default all fields. Other changes are explicitly excluded; missing differs from null. |
| key | array | – | records mode only: JSON Pointers identifying each record, e.g. ['/id'] or ['/account','/sku']. Required in records mode. Unique nonempty string/number values; no guessed keys. |
| max_hunks | integer | – | Hunks/sections or changed-record previews returned. Default 20, max 100. Counts still cover the full comparison. |
| mode | string | – | Default summary: changed sections/rows. unified: line diff. records: compare JSON/JSONL objects by explicit key, ignoring record order; requires key. |
| out | string | – | records mode only: optional absolute output path for complete JSONL changes, e.g. '/abs/changes.jsonl'. Default no writes. Existing files get a suffix; input files are never overwritten. Cap 64 MiB. |
| records_path | string | – | records mode, JSON only: JSON Pointer to the records array, e.g. '/data/orders'. Default empty string = root array. JSONL: omit. |
No output schema declared.
No examples provided.
extract Pull matches/values out of files ~459
Extract values with locations: regex, jq, built-in kinds, or reusable document profiles. USE WHEN: emails/URLs/IDs; batch recurring labeled forms using a saved profile (up to 100 txt/md/docx/text-layer PDFs). PREFER OVER: repeated reads/field calls. Read/Grep for one small text file; reuse an existing correct script. DOES NOT: train, infer templates, OCR, verify meaning or guarantee cost savings. Profiles recheck exact anchors/unique labels; mismatches need review. Save rules once with Write/editor; docs/DOCUMENT_PROFILES.md. EXAMPLE: extract({paths:["/abs/*.docx"],profile:"/abs/profile.json",out:"/abs/results.jsonl"}) · extract({path:"/abs/a.pdf",kind:"emails"}) RETURNS: bounded matches; profiles: counts, values/locations, review reasons, optional full local report. Ledger excludes setup/model/schema costs.
| Name | Type | Req | Description |
|---|---|---|---|
| dedupe | boolean | – | Collapse identical values (default true). Not for profiles. |
| ignore_case | boolean | – | Case-insensitive pattern. Default false. |
| jq | string | – | JSON jq filter, e.g. '.items[].name'. Without system jq: paths, [], keys, length, values, .. and pipes only. |
| kind | string | – | Built-in extractor, e.g. 'emails'. |
| max_matches | integer | – | Returned matches (default 100; profile rows 20), cap 500. Byte limit also applies. |
| out | string | – | Profile only: full JSONL report, e.g. '/abs/results.jsonl'; never overwrites. Default: preview only. |
| path | string | – | File or glob. Example: '/abs/report.pdf'; use paths for several. |
| paths | array | – | Files/globs. Example: ['/abs/docs/*.docx']. |
| pattern | string | – | JS regex; first capture group or whole match. Example: 'order-([0-9]+)'. Choose pattern, jq, kind or profile. |
| profile | string | – | Saved version-1 profile JSON path, e.g. '/abs/profile.json'. See docs/DOCUMENT_PROFILES.md. Exclusive with pattern/jq/kind. |
No output schema declared.
No examples provided.
file_map Outline a file or directory without reading it ~353
Structural outline of a file or directory WITHOUT its contents: headings (md/docx), function/class signatures (code), sheets + column headers + row counts (xlsx), slide titles (pptx), page count + outline + first line per page (pdf), size-annotated tree (directory). USE WHEN: "what's in this file/folder", "outline this document", "which functions are in here", "what sheets and columns does this spreadsheet have", or before deciding what to read. PREFER OVER: reading an entire large document just to learn its structure, or ls+grep+head loops for directories. If the question or section is already known, query_file/read_section directly; mapping is optional. Read is fine — and sufficient — for a small plain-text file (< ~20 KB): just Read it; do not call file_map on a file you have already read. DOES NOT: return contents (use read_section), search inside files (use query_file), or parse code with a real parser (signatures are regex-based, so unusual syntax may be missed). EXAMPLE: file_map({ path: "/abs/project/src", depth: 2 }) · file_map({ path: "/abs/contract.pdf" }) RETURNS: an outline with locations (line / page / sheet / slide / ¶) that read_section accepts, counts and sizes, then a savings line.
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | Directory depth to show. Default 2, max 8. Ignored for files. |
| path | string | yes | File or directory to outline. Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/project/src'. Required. |
No output schema declared.
No examples provided.
query_file Find ranked passages in documents ~453
Ranked passages matching a query inside one or many files (txt/md/code/pdf/docx/pptx/xlsx/csv), each with its exact location, so the follow-up read is surgical. USE WHEN: "where does the contract discuss termination", "does this deck mention pricing", "find every place the spec talks about retries", "which of these docs cover X". PREFER OVER: Read/cat of a LARGE file (> ~20 KB) just to find one passage; Grep for PDFs/DOCX/PPTX/XLSX (Grep can't open them) and for ranking across many files. Read is fine — and sufficient — for a small plain-text file: if you have already Read a file, you have everything this tool would return; do not call it on that file. Grep is fine for an exact string in one plain-text file. DOES NOT: add anything to a file you have already read, use embeddings/semantic search (BM25 keyword ranking + exact-phrase boost), return whole files, or search binary formats other than the ones listed. EXAMPLE: query_file({ path: "/abs/contract.pdf", query: "termination notice", max_results: 5 }) RETURNS: ranked hits "#1 file · page 12, line 3 (Heading > Sub)" with a short excerpt each, files/passages scanned, skipped files with reasons, then a savings line.
| Name | Type | Req | Description |
|---|---|---|---|
| context_lines | integer | – | Lines of context around each hit. Default 2, max 10. |
| max_results | integer | – | Passages returned. Default 8, hard cap 30. |
| path | string | – | One file (or glob) to search. Example: '/abs/docs/contract.pdf'. Use `paths` for several. |
| paths | array | – | Several files or globs to search and rank together. Example: ['/abs/docs/*.pdf', '/abs/notes.md']. |
| query | string | yes | What to look for, in plain words or a phrase. Example: 'termination notice period'. Required. |
| regex | boolean | – | Treat `query` as a JavaScript regular expression instead of ranked keyword search. Default false. |
No output schema declared.
No examples provided.
query_table Query a CSV/XLSX/Parquet with SQL ~548
Run SQL (DuckDB) over a CSV/TSV/Parquet/XLSX file without the data ever entering your context. The file is table `t`. USE WHEN: "total sales by region", "how many rows have a negative total", "top 10 customers", "which columns exist and what types", any aggregate/filter/join-free question about a table. PREFER OVER: Read/cat/head of the table, writing a pandas/awk script, or loading rows to count them. Read is fine for a tiny table (< ~50 rows) you need verbatim. LIMITS: one read-only SELECT or DESCRIBE; no SQL file/network access, COPY, extensions, or multiple statements. Input/export cap 64 MB, DuckDB memory 256 MB, worker deadline 15s (timeout_ms up to 60s). Explicit out creates a new CSV without overwriting. DOES NOT: modify the file, join several files (one file = one table), or return more than 200 rows in-context (use `out` to write the full result to CSV). EXAMPLE: query_table({ path: "/abs/sales.csv", sql: "SELECT region, SUM(total) FROM t GROUP BY 1" }) · query_table({ path: "/abs/sales.csv", sql: "DESCRIBE t" }) RETURNS: a markdown table of up to max_rows rows, column names/types, total result rows, the written file path when `out` is set, then a savings line. SQL errors include the table's columns and types so the next attempt succeeds.
| Name | Type | Req | Description |
|---|---|---|---|
| max_rows | integer | – | Rows returned. Default 50, hard cap 200. The total row count is always reported. |
| out | string | – | Write the full result to a new CSV (64 MB export cap; existing files are never overwritten). Example: '/abs/out/by-region.csv'. |
| path | string | yes | CSV, TSV, Parquet or XLSX file. Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/sales.csv'. Required. |
| sheet | string | – | XLSX only: sheet name to query. Default: first sheet. |
| sql | string | yes | One read-only DuckDB SELECT (WITH allowed) or DESCRIBE against table `t`; no external files or commands. Example: 'SELECT region, SUM(total) AS total FROM t GROUP BY 1 ORDER BY 2 DESC'. Required. |
| timeout_ms | integer | – | Query worker deadline in milliseconds. Default 15000, maximum 60000. Example: 5000. |
No output schema declared.
No examples provided.
read_section Read one located section of a file ~405
The surgical read: returns ONLY the located section of a file — a heading's section, a page range, a line range, DOCX paragraphs, an XLSX sheet range, or PPTX slides — capped at max_tokens. USE WHEN: you know where the content is (from the task, file_map or query_file) and need the actual text of just that part; reading pages of a PDF, a sheet of a workbook, a section of a long doc. PREFER OVER: Read/cat of the whole file when you need a slice, and always for PDF/DOCX/XLSX/PPTX (Read can't slice them). Read is fine for small plain-text files you need in full. DOES NOT: search (use query_file), read whole large files (cap 8000 tokens — narrow the locator instead), or render images. EXAMPLE: read_section({ path: "/abs/contract.pdf", locator: { pages: "3-5" } }) · read_section({ path: "/abs/spec.md", locator: { heading: "Installation" } }) RETURNS: the section text with line/page/¶ markers, word count, a "truncated at N — continue with …" note when capped, then a savings line.
| Name | Type | Req | Description |
|---|---|---|---|
| locator | object | yes | Exactly what to read: {heading} | {pages} | {lines} | {paras} | {sheet, range} | {slide}. Use a known location directly, or find it with file_map/query_file. Example: { pages: '3-5' }. Required. |
| max_tokens | integer | – | Cap on returned text (≈ bytes/4). Default 2000, max 8000. When hit, the response says how to continue. |
| path | string | yes | File to read from. Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/contract.pdf'. Required. |
No output schema declared.
No examples provided.
summarize_log Cluster and time-bucket a log file ~391
Structure of a log file in ~300 tokens: repeated-message clusters (numbers/ids/paths masked) with counts, first/last time and one sample each, level counts, and a rate timeline — from 80k lines without reading them. USE WHEN: "what's causing the 5xx spike", "summarize this log", "what errors are in here", "when did the failures start", before grepping. PREFER OVER: tail/head/grep loops and Read on any log over a few hundred lines; run this first, then Grep/extract for the specific message. Read is fine for a log under ~100 lines. DOES NOT: follow files live, parse binary logs, correlate across files, or explain root cause (it shows structure and timing so you can). EXAMPLE: summarize_log({ path: "/abs/logs/app.log", focus: "errors", since: "2h" }) RETURNS: totals + time span + level counts, a bucketed timeline (all vs. focused lines), top clusters "#1 ×812 ERROR 10:41→10:52 <template>" with a sample line, then a savings line.
| Name | Type | Req | Description |
|---|---|---|---|
| focus | string | – | 'errors', 'warnings', or a keyword/regex to cluster only matching lines. Example: 'timeout'. Default: all lines. |
| max_clusters | integer | – | Clusters returned. Default 15, max 50. |
| path | string | yes | Log file (any text log). Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/logs/app.log'. Required. |
| since | string | – | Only lines at/after this time: ISO timestamp or relative like '2h', '30m', '3d' (from now). Example: '2026-09-18T10:00:00'. |
No output schema declared.
No examples provided.
validate_file Deterministic checks on a generated file ~321
Deterministic checks on a file you (or someone) just wrote: JSON/YAML/XML parse, CSV column-count consistency, JSON Schema conformance, broken relative links/anchors/images in Markdown/HTML, encoding/BOM/NUL/mixed line endings. USE WHEN: after generating or editing JSON/CSV/YAML/HTML/Markdown, "is this file valid", "check the links in this README", before handing a file to another tool or person. PREFER OVER: re-reading your own output to eyeball it, or setting up a linter for one check. A language toolchain (tsc, eslint, pytest) is the right tool for source code — this does not run it. DOES NOT: validate code syntax, check external URLs (use verify.check_links), or fix anything. EXAMPLE: validate_file({ path: "/abs/out/data.json", schema: "/abs/schema.json" }) · validate_file({ path: "/abs/README.md" }) RETURNS: "PASS" with the checks run, or "FAIL" with line-numbered problems and what to do, then a savings line.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | File to validate: JSON, YAML, XML, CSV/TSV, Markdown, HTML (others get encoding checks only). Accepts absolute paths, '~' paths and paths relative to the current directory. Example: '/abs/out/config.… |
| schema | string | – | JSON Schema file to validate a JSON/YAML file against. Example: '/abs/schema.json'. |
No output schema declared.
No examples provided.
How do I install the tiny-context — efficient file tools by AVRG3 MCP server?
tiny-context — efficient file tools by AVRG3 ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 2b75baa5b942dd4b380f7b356ec0dfdbd6a532434e505bc2338f70ed32f91006; the commands to do that are on this page. If it does not match, do not open it.
mcpb · tiny-context-0.3.0-win32.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
2b75baa5b942dd4b380f7b356ec0dfdbd6a532434e505bc2338f70ed32f91006
macOS / Linux
echo "2b75baa5b942dd4b380f7b356ec0dfdbd6a532434e505bc2338f70ed32f91006 tiny-context-0.3.0-win32.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\tiny-context-0.3.0-win32.mcpb).Hash -eq "2b75baa5b942dd4b380f7b356ec0dfdbd6a532434e505bc2338f70ed32f91006"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the tiny-context — efficient file tools by AVRG3 MCP server?
tiny-context — efficient file tools by AVRG3 is an MCP server listed in the public MCP registry as io.github.Warddamn/tiny-context. Local document queries, saved extraction profiles, spreadsheet SQL, logs and keyed JSON changes. This page covers its MCPB bundle (https://github.com/Warddamn/tiny-tools/releases/download/context-v0.3.0/tiny-context-0.3.0-win32.mcpb).
Is the tiny-context — efficient file tools by AVRG3 MCP server safe to use?
tiny-context — efficient file tools by AVRG3 scores 50 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the tiny-context — efficient file tools by AVRG3 MCP server expose?
tiny-context — efficient file tools by AVRG3 exposes 8 tools: file_map, query_file, read_section, query_table, summarize_log, and 3 more. Their descriptions and schemas cost roughly 3,632 tokens of context every time the server is loaded.
What licence is the tiny-context — efficient file tools by AVRG3 MCP server under?
tiny-context — efficient file tools by AVRG3 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.