Sigil Notary
Tamper-evident audit trails for AI agents.
Sigil gives AI agents cryptographically signed, hash-chained audit trails via the Model Context Protocol. Every action gets a verifiable receipt with an Ed25519 signature and SHA-256 chain link.
Install
pip install sigil-notary
MCP Server Usage
Sigil ships as an MCP server that any MCP-compatible AI agent can use natively.
Claude Code
Add to your .claude/settings.json or project MCP config:
{
"mcpServers": {
"sigil": {
"command": "uvx",
"args": ["sigil-notary"],
"env": {
"SIGIL_API_KEY": "sg_your_key_here",
"SIGIL_API_URL": "https://api.sigil-notary.dev"
}
}
}
}
Available MCP Tools
| Tool | Description |
|---|---|
attest_action |
Record an action and get a signed, hash-chained receipt |
verify_receipt |
Verify a receipt's signature and chain integrity |
get_chain |
Retrieve the full audit trail for the current agent |
Python SDK
For programmatic access, use the Python client directly:
from sigil import SigilClient
client = SigilClient(api_key="sg_your_key_here")
# Record an action
receipt = client.attest(
action_type="file_write",
payload={"path": "/app/config.yaml", "summary": "Updated DB connection string"}
)
print(f"Receipt #{receipt.seq}: {receipt.receipt_hash[:16]}...")
# Verify a receipt
result = client.verify(receipt.id)
print(f"Valid: {result.valid}, Chain intact: {result.chain_valid}")
# Get the audit trail
chain = client.get_chain(agent_id="my-agent")
for r in chain.receipts:
print(f" #{r.seq} {r.action_type} — {r.timestamp}")
Async Client
from sigil.client import AsyncSigilClient
async with AsyncSigilClient(api_key="sg_your_key_here") as client:
receipt = await client.attest("api_request", {"endpoint": "/users"})
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
SIGIL_API_KEY |
Yes | — | API key for authentication |
SIGIL_API_URL |
No | http://localhost:8100 |
Notary API base URL |
SIGIL_AGENT_ID |
No | from key | Agent identity for chain queries |
Development
git clone https://github.com/sly-the-fox/sigil.git
cd sigil
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check .
Links
- Documentation: https://sigil-notary.dev/docs
- Hosted Service: https://sigil-notary.dev
- Issues: https://github.com/sly-the-fox/sigil/issues
- Changelog: CHANGELOG.md
License
Release files for sigil-notary 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sigil_notary-0.2.1.tar.gz | 12.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sigil_notary-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 kB
Release files / sigil_notary-0.2.1.tar.gz
| Download URL | sigil_notary-0.2.1.tar.gz |
|---|---|
| Size | 12.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9c45786d9f0bd06a5836b7b38130ae6fa3a2424fdaa4f420b98592d780f8a740
|
|
BLAKE2b-256 checksum How to use checksums |
8c5a3c95398894fdf5fdd3165e6cf0da3cd331c4a9c299f54d54f5f2f0b4afd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / sigil_notary-0.2.1-py3-none-any.whl
| Download URL | sigil_notary-0.2.1-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6272e4f73d98b4b591d7985dbaccc44819d74d9e57f35bf1426ee1a35064aad1
|
|
BLAKE2b-256 checksum How to use checksums |
0015c1ab2f723dbdb7b76ee52d9f1832e9a0bc4a19df66c98bbaee1c2a427d72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency log