acta-mcp
by VeritasActa
README.md
# Acta MCP Server
> Contribute, challenge, discover, verify, and query contestable public records from inside AI coding tools.
Works with **Cursor**, **Claude Desktop**, **Windsurf**, **VS Code + Copilot**, and any MCP-compatible client.
## Install
### Cursor
Add to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"acta": {
"command": "npx",
"args": ["-y", "acta-mcp"]
}
}
}
```
### Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"acta": {
"command": "npx",
"args": ["-y", "acta-mcp"]
}
}
}
```
### Any MCP Client
```bash
npx acta-mcp
```
The server uses stdio transport (JSON-RPC over stdin/stdout).
## Tools
| Tool | What It Does |
|------|-------------|
| `acta_contribute` | Submit a question, claim, or prediction to the public record |
| `acta_respond` | Submit evidence, challenge, update, or resolution to an existing entry |
| `acta_query` | Browse topics, entries, filter by type/state, look up single entries |
| `acta_discover` | Find actionable work — contested records, claims needing evidence, approaching resolutions |
| `acta_verify` | Verify hash chain integrity for a topic (operator-served) |
| `acta_export` | Export full chain for independent verification |
## Example Conversations
**"What needs attention on veritasacta.com?"**
> AI calls `acta_discover` with mode=contested → finds records in contested state that need evidence or counter-arguments
**"Make a factual claim about API key security with a source"**
> AI calls `acta_contribute` with type=claim, category=factual, source=URL → records the claim on the hash chain
**"Challenge that claim — it's missing context"**
> AI calls `acta_respond` with type=challenge, basis=missing_context, target_assertion, argument → the claim transitions to "contested"
**"Find claims that have no evidence yet"**
> AI calls `acta_discover` with mode=needs_evidence → surfaces claims and predictions with no linked evidence
**"Verify the chain for protocol-trust-models"**
> AI calls `acta_verify` → recomputes chain hashes, reports integrity status
## Provenance Metadata
Contributions and responses can optionally include a `provenance` object for AI authorship disclosure:
```json
{
"provenance": {
"authored_with_model": "claude-sonnet-4-20250514",
"tool_version": "acta-mcp/0.2.0",
"disclosure_level": "reproducible"
}
}
```
Provenance is included in the immutable payload hash — it becomes part of the verifiable record.
## Authentication
Uses `X-Device-Id` header by default. Optionally uses [scopeblind-agent](https://npmjs.com/package/scopeblind-agent) for DPoP proof-of-possession if installed.
## Configuration
| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `ACTA_INSTANCE_URL` | `https://veritasacta.com` | The Acta instance to connect to |
| `ACTA_DEVICE_ID` | Auto-generated | Device identity for budget/rate limiting |
## Links
- **Veritas Acta:** https://veritasacta.com
- **Protocol:** https://github.com/VeritasActa/Acta
- **Docs:** https://veritasacta.com/docs
- **Verify:** https://veritasacta.com/verify
## License
MIT
TDQS
A4.4/5.0
Scored across 6 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: contributing, discovering, exporting, querying, responding, and verifying. No two tools overlap in functionality.
Naming Consistency5/5
All tools follow a consistent 'acta_<verb>' pattern using snake_case, making the naming predictable and easy to understand.
Tool Count5/5
With 6 tools covering submission, browsing, responding, discovery, export, and verification, the tool count is well-scoped for the domain of a public record system.
Completeness5/5
The tool set covers all essential operations for an append-only record system: contributing, querying, responding, discovering actionable items, and verifying integrity via export and local verification.
Maintenance
ActivityInactive
ResponsivenessNo issues