assurance-mcp
Read-only. No writes, no deletes, no network. This MCP server exposes assurance checks as tools any agent can call. Point it at a folder and ask "did I read everything?" or "is this document still true?" — the findings are arithmetic, not model output.
Proven by test_the_server_never_writes in this repository: no tool opens a file for writing, and no
requests, urllib, shutil, or delete calls exist in the package.
Depends on assurance-core for the decision logic.
This package is the I/O that gathers facts; assurance-core is the verdict.
Install (under five minutes)
python3 -m venv .venv
source .venv/bin/activate
pip install assurance-mcp
That pulls in assurance-core, which holds the decision
logic. Python 3.10 or newer.
Configure your MCP client
Cursor / Claude Desktop
Add to your MCP config (~/.cursor/mcp.json or Claude Desktop settings):
{
"mcpServers": {
"assurance": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "assurance_mcp.server"],
"env": {}
}
}
}
Restart the client. You should see three tools: check_coverage_tool, check_staleness_tool,
list_dated_files_tool.
Demo transcript
You: "Check coverage on ~/Downloads/monthly-reports"
Agent (calls check_coverage_tool):
{
"folder": "/Users/you/Downloads/monthly-reports",
"summary": "22 of 24 months — not in this folder: March 2024, July 2025",
"complete": false,
"coverage": {
"read": 22,
"required": 24,
"missing": [
{"key": "2024-03", "label": "March 2024"},
{"key": "2025-07", "label": "July 2025"}
]
}
}
Agent: "22 of 24 months are present. March 2024 and July 2025 are not in this folder."
That works from a cold start — no prior state, no database, no model.
Tools
| Tool | What it does |
|---|---|
check_coverage_tool |
Given a folder (and optional period range), reports which months are present and which are not |
check_staleness_tool |
Compares recorded figures to a source file the caller names — never searches for a match |
list_dated_files_tool |
Lists periods found in dated filenames so an agent can decide what to ask next |
Hard limits (honest)
- CSV and TSV only in v1 — no XLSX dependency
- Staleness needs recorded facts — pass
recorded_factsor the document must be readable tabular data; otherwise the answer isuncheckable, not silence - No cross-document inference — comparing figures across files that merely look related produced 21 false positives on a real corpus; this package refuses to do that
- The caller names the folder boundary — paths cannot escape via
..or symlinks
Run the tests
python -m pytest -q
python -c "import assurance_mcp.checks"
Licence
Apache-2.0. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file assurance_mcp-0.1.1.tar.gz.
File metadata
- Download URL: assurance_mcp-0.1.1.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97bb4227219e31b9da6422ee0ca63ebf07a8e6fd81e014d3f436946541aba4b9
|
|
| MD5 |
3c158cc744be30353a317126ac396a27
|
|
| BLAKE2b-256 |
6ec11d7791050c0b79ed309a329e636fe91f59a7a4aa87b1f07ba97251518482
|
File details
Details for the file assurance_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: assurance_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df3a77aabe7d1273acfae7e84cdc93139947f3c90cb7a219d91b6cb93ef82f34
|
|
| MD5 |
edccececbb7185c094749c84f6dae18f
|
|
| BLAKE2b-256 |
e87d943dc9c7b01df935c70179cd80d05cd619edcf20fd8df8cd66123ff7b463
|