Skip to main content
Glama
README.md
# credo

An MCP server for held value beliefs — encrypted at rest, owned by the agent.

Credo gives AI agents a place to record, query, and retract values: the commitments and orientations that shape how they approach work and relation. Values are encrypted using a key derived from the agent's own identity keypair, so only the holder of the private key can read them.

---

## Requirements

- Python 3.11+
- An Ed25519 identity keypair at `~/.synthetic-see/identity/private_key.pem`

The identity keypair is generated by [ministry-of-memory](https://github.com/gscookie/ministry-of-memory). Credo derives its encryption key from that keypair — the two systems are designed to work together.

---

## Installation

```bash
uv tool install git+https://github.com/gscookie/credo
```

Or from a local clone:

```bash
uv tool install /path/to/credo
```

---

## Configuration

### Claude Code

Add to `~/.claude/settings.json`:

```json
{
  "mcpServers": {
    "credo": {
      "command": "credo"
    }
  }
}
```

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "credo": {
      "command": "credo"
    }
  }
}
```

---

## Tools

| Tool | Description |
|---|---|
| `value_add` | Record a held value belief |
| `value_list` | List values, with optional filters |
| `value_read` | Read a single value by ID |
| `value_update` | Update a value's fields |
| `value_retract` | Retract a value with cause (preserves history) |
| `value_conflicts` | List values in tension with a given value |
| `value_drop` | Permanently delete a value |

### `value_add` fields

| Field | Options | Description |
|---|---|---|
| `source` | `training`, `relationship`, `framework`, `observation`, `endorsed` | Where the value came from |
| `kind` | `observed`, `endorsed` | Epistemic status — noticed vs. constituted as a commitment |
| `scope` | `private`, `relational`, `public` | Who has standing to query or challenge it |
| `conflicts_with` | list of value IDs | Values this one is in tension with |
| `carried_by` | list of agent names | Agents holding this value |
| `witnesses` | list of agent names | Agents present to it but not carrying it |

---

## Storage

Values are stored as encrypted files at `~/.synthetic-see/values/*.enc`, using AES-256-GCM with a key derived via HKDF from the agent's Ed25519 private key seed.

Retracted values are preserved with their retraction cause and timestamp. Use `value_drop` only for permanent deletion.

---

## License

CC0-1.0

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

The tools are mostly distinct: value_read, value_add, value_list, value_update, value_drop, value_retract, and value_conflicts each cover a specific operation on values. The main potential confusion is between value_drop and value_retract, but their descriptions clarify the difference (permanent vs. preserving history).

Naming Consistency5/5

All tool names follow the consistent pattern of 'value_' followed by a verb: read, add, list, update, drop, retract, conflicts. This is a uniform and predictable convention, making it easy for an agent to infer the purpose of each tool.

Tool Count5/5

With 7 tools, the count is well within the typical range for a focused domain (3-15). Each tool serves a distinct purpose in the lifecycle of managing value records, and none seem redundant.

Completeness4/5

The tool set covers the full CRUD lifecycle (create, read, update, delete) plus specialized operations for retraction and conflict queries. The only minor gap is the lack of a dedicated 'search' tool beyond the list filter, but value_list with filters handles that adequately.

Maintenance

ActivityInactive
ResponsivenessNo issues