Unified Git-Context-Controller (GCC) memory system with HTTP API and MCP integration
GCC exposes 31 tools with significant quality gaps. Tool naming is inconsistent: some follow verb_noun (init, branch, log, commit, merge) but many are bare nouns (ensure_repo, checkout_branch, add_and_commit, git_log, current_branch, git_show, git_diff, git_reset, list_branches, read_main, update_main, append_log, read_log_tail, read_metadata, update_metadata, validate_*). Descriptions exist but are terse (avg ~80 chars, below the 194-char baseline for A+ tools). Parameter descriptions are minimal or absent in many tools. Input schemas are visible but lack depth: most parameters are typed (Path, string, list, dict, integer) but lack constraints (enums, min/max, patterns). Output schemas are not documented. Error handling is absent from tool definitions, no guidance on recovery, retryable vs fatal errors, or actionable messages. Security concerns: tools accept session_id and root paths as parameters without visible validation or sanitization. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 13 WRITE/DESTRUCTIVE tools. Composition is poor: 8 validator tools (validate_branch_name, validate_session_id, validate_git_ref, validate_limit, validate_string_length, validate_path_safe, validate_purpose, validate_contribution, validate_reset_mode) should be internal, not exposed. This inflates the tool count and forces agents to call validators explicitly.
Add files and create commit.
Append log entries to branch log.
Create a new memory branch. Creates a branch with git tracking and initializes commit.md, log.md, and metadata.yaml.
Checkout or create a branch.
Create a memory checkpoint commit. Records contribution with optional log entries, metadata updates, and main.md update.
Get current branch name.
Ensure git repository exists and is configured. Initializes repository if needed, configures user identity, and ensures at least one commit exists.
9 validator tools (validate_*) should not be exposed as MCP tools. Validation is an internal concern, not an agent-facing capability. This inflates the tool count, forces agents to call validators explicitly, and violates single-responsibility principle.
Tool naming inconsistency: 'add_and_commit' violates single-responsibility naming (contains 'and'). Should split into separate tools or rename to 'commit_files'. Similarly, 'ensure_repo' is vague, does it create, validate, or initialize? Use 'init_repo' or 'verify_repo'.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 13 WRITE/DESTRUCTIVE tools (init, branch, log, commit, merge, checkout_branch, add_and_commit, merge_branch, git_reset, update_main, append_log, update_metadata, log_operation). Agents cannot distinguish safe from dangerous operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Show differences between commits or branches.
Get commit history.
Reset repository to a specific commit.
Show commit details.
Initialize a GCC memory session. Creates the directory structure, initializes git repository, and sets up main.md with goal and todo.
List all branches for a session.
Append log entries to a branch. Adds timestamped log entries and creates a git commit.
Convenience function to log an operation for audit purposes.
Merge a source branch into target branch. Combines commits, logs, and metadata from source into target.
Merge a branch into current branch.
Read last N lines from branch log.
Read main.md content.
Read branch metadata.
Update main.md with new content.
Update branch metadata.
Validate git branch name.
Validate commit contribution string.
Validate git reference (commit hash, branch, tag, etc.).
Validate limit parameter for pagination.
Validate path is safe and within allowed boundaries.
Validate branch purpose string.
Validate git reset mode.
Validate and normalize session ID.
Validate string length against maximum.
Output schemas are not documented. Tools like 'git_log', 'list_branches', 'read_main', 'read_metadata' return data but the response structure is not visible in tool definitions. Agents cannot plan downstream calls or extract required fields.
No error handling guidance in tool definitions. Tools accept paths and session IDs without visible validation or sanitization. No recovery hints (e.g., 'If branch not found, call list_branches() first'). Agents have no guidance on retryable vs fatal errors.