Skip to main content
Glama

gpp (把 git++)

CI License: MIT Rust 2024

AI 智能体在持续地修改代码,同时总是会丢失两次提交之间发生的工作;你为了代码库而做的那些笔记(CLAUDE.md、记忆库、知识文件)也会在代码往前演进之后悄然过期。gpp 正是为这一现实而构建的版本控制系统:它在每次变更发生的那一刻就捕获它,带显式意图、作者类型(人/智能体)和成本记录的精选变更集,然后promote(提升),并把项目知识托管在仓库自身的提交历史之上——因此,当某个提交把一条你认为成立的“关于代码的信念”推翻时,gpp 能直接指出是哪个提交。

gpp demo

(录屏由 scripts/demo.sh 生成——确定性,可复现,没有任何模拟。)

30 秒速览

cargo install gpp-cli

gpp init --graphex
echo "fn main() {}" > main.rs
gpp timeline                     # captured already — no staging, no commit
gpp promote -m "first cut" --intent feature
gpp diff HEAD                    # semantic diff: renames/moves are one op

而另一个其他 VCS 都不会做的事——把你对代码的信念记下来,让提交历史去审核它:

gpp belief add --claim "token expiry is 24h" --evidence src/auth.rs:7-7
# ...weeks of commits later...
gpp belief bisect "token expiry is 24h"
# INVALIDATED  cs:fhcpef7c  "raise token expiry to 7 days"
#  -     7 | pub const EXPIRY_HOURS: u64 = 24;
#  +     7 | pub const EXPIRY_HOURS: u64 = 168;

完全确定——只有 diff 交集和 blob 哈希,零 LLM 调用、零网络请求。(供对比:让最前沿的模型去判断某条存储下来的认知是否已经失效,它在 STALE benchmark 上最高只有 55.2% 的准确率——而在 gpp 中这只是一次历史查询,并不是一次模型判断。)这种方法已经用四个语言、五个真实仓库的 hiki后续验证过——xn"axum 0.6→0.7、flask 1.1→2.0、clap 3→4、zod 3→4、go-redis 8→9——其中每一条失效的信念都能二分定位到一个固定、可查的“元凶”提交,而对照组的控制条件不受影响。完整验证矩阵见 demos/belief-bisect/。

Related MCP server: ITHZ MCP

它不同于哪几个地方 where we differ

  • 持续捕获。 一条高分辨率“时间线”记录着每一次文件变更(SQLite WAL、防抖 watcher);经筛选的变更集会被*promote(提升)*出来,并带明确的目的、作者类型以及成本记录。commit 与 commit 之间没有任何东西会丢失。

  • Graphex:有版本、可加密的项目知识。 架构、约定、决策和信念都驻留在仓库内一个加密的知识图谱中,按智能体的信任层级做分级门控,每次读取都有审计记录,并持续接受提交历史中的过期检查。

  • 智能体治理。 agent 有一等公民身份、信誉打分;合规即代码(compliance-as-code)策略在 capture/promote/sync 三边强制实施;并支持异常检测与每个变更集各自的 token/成本归因。

除了上面的,任何其余部分——Noise 上的 P2P 同步、replay、评审/RBAC、中继节点、TUI——都是底层平台支撑的:见 docs/ARCHITECTURE.md。

Git 是底座,不是对手。 桥(gpp git-import / git-export / git-bridge)与真实 Git 提交完整畅通、双向往返。因此 GitHub 和现有工作流照常使用——gpp 的知识层、溯源层和治理层则是搭在旁边延伸。前方的 axum 演示就是全部跑在通过这座桥导入的真实历史。

接入 Claude Code(或任何 MCP 客户端)

GPP 随包带来的 MCP 服务;智能体可以查询图谱(每一条信念都带有一个“新鲜度信封”——锚定 anchor、此刻到未来的 commits、以及让麻醉失效掉的那条更改)、以 propose_belief 提交带有证据锚定的自己的信念(先经人类批准,然后交由历史去审检)、提出 changeset、并上报成本。只需要你仓库根目录的 .mcp.json 写成这样:

{
  "mcpServers": {
    "gpp": { "command": "gpp", "args": ["mcp-server", "--stdio"] }
  }
}

客户端完整设置(Claude Desktop、通用 stdio)和外部暴露的工具列表:docs/MCP.md。

状态

全部 9 个 ROADMAP 阶段(0–8)均已实现。 各阶段交付物与已记录的偏差说明,见 docs/ROADMAP.md;按优先级排队的积压工作见 docs/TODO.md;持续运行的工程日志见 docs/WORKLOG.md。

2026-08-23 检查:184 个 workspace 测试通过,cargo clippy 和 cargo fmt 干净无错,整个 workspace 可构建。不存在摆烂的 crate——每个 crates 都有可用实现。覆盖率被 CI 所计量(cargo llvm-cov;基线行为 65.7% line,正在提高)。

测试深度仍不均:基础层覆盖度良好(gpp-core、gpp-graphex、gpp-diff、gpp-tui 均有 ≥ 80% 的行覆盖率;CLI 有端到端磨坊:政策执行、成本统计、审查指派、以及信念二分),而有些集成 crate 仍停留在 smoke 层级(gpp-sdk、gpp-notify、gpp-rbac、gpp-replay)。这里的“已实现”是指达到了它的 milestone,不是所有部分都彻底加固过。补上这个 gap 正是 docs/TODO.md 的第一优先级。

全帧分层表

层次

Crate

实现的能力

Storage

gpp-core

内容寻址存储(BLAKE3 + zstd)、Blob/Tree、原始已校验帧传输

时间线

gpp-timeline

SQLite(WAL)捕获、.gppignore、debounce watcher、修剪

历史

gpp-history

Changeset/Intent/Author、分支引用、promote、DAG 遍历

Diff

gpp-diff

行级 + tree-sitter 语义 diff(Rust/Python/TS/Go)、rename/move 识别

Git 桥

gpp-git-bridge

git-import/git-export/git-bridge、SQLite 哈希映射

Graphex

gpp-graphex

加密(age + AES-GCM)知识图谱、分级投影、查询、生命周期、审计、信念与失效引擎

SDK / MCP

gpp-sdk

AgentSession;gpp mcp-server --stdio(JSON-RPC MCP)

信任

gpp-trust

荣誉度打分、状态转换、覆盖(overrides)、事件

政策

gpp-policy

.policy TOML 规则,专注 promote(阻断)/ timeline(警告)/ sync(阻断),内置模板

费用

gpp-cost

每次变更集的 token 和 $ 记录、预算、效率、agent self-reporting

异常

gpp-anomaly

scope/burst/体量检测,处理工作流

幂等

gpp-sync

Noise_XX P2P;对象/refs/策略/graphex;分叉保留

Replay

gpp-replay

可复现环境快照 + drift diff

Review/RBAC/通知

gpp-review gpp-rbac gpp-notify

review 生命周期、资源角色与分支保护、事件/收件箱/HMAC webhook

远程工作

gpp-remote

GitHub/GitLab/Bitbucket PR 创建、富文本 description、CI/通俗 review 导入

Relay

gpp-relay

常驻同步枢纽 binary + health endpoint + Dockerfile

客户端

gpp-cli gpp-tui gpp-deps

完整 CLI、ratatui TUI(gpp ui)、依赖情报(gpp deps + OSV)

以及:extensions/{gh-gpp,vscode-gpp,neovim-gpp}、GitHub Actions + GitLab CI 模板、deploy/ Docker 镜像、packaging/ Homebrew。

已记录在案但还未安排(它们被收进 ROADMAP/TODO,而不是无声跳过):依赖的 registry/许可证 API、原生 PyO3/napi bindings、对外出的语义层 review sync、apt/dpkg 安装包。

安装 / 构建

cargo install gpp-cli                    # the `gpp` binary (crates.io)
cargo install gpp-relay                  # relay node (optional)

# or from a clone
cargo build --release
cargo test --workspace
cargo bench -p gpp-core -p gpp-diff      # criterion perf suite

预编译二进制(Linux、macOS ARM+Intel、Windows)随每次 release一起提供;cargo install --git https://github.com/mahabubulid/gpp gpp-cli 则一直能拿到未正式版本的最新开发版。

更多值得 尝试

# Governance
gpp policy template secrets-scan
gpp trust show
gpp audit --include-cost --include-graphex

# Decentralized: sync two repos over Noise
gpp sync serve 127.0.0.1:9473             # on peer A
gpp sync add a 127.0.0.1:9473 && gpp sync # on peer B

# GitHub-compatible
gpp remote setup --platform github --repository acme/webapp
gpp remote pr-create --base main

项目说明见 CLAUDE.md;完整 spec(架构、数据模型、CLI、协议、roadmap)见 docs/;用户手册与教程见 docs/book/。

许可证

MIT

Available Tools

9 tools
graphex_conventionsB

List applicable coding conventions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'List applicable coding conventions' with no indication of the output format, whether it returns a list, or any side effects (none expected). It does not say what 'applicable' means or what constitutes a convention. This is minimal and not transparent beyond the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and object. There is no fluff, and it is appropriately sized for a tool that takes no parameters. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless tool with no output schema, the description is minimally adequate. It tells the agent what it does. However, it leaves open questions about the nature of the output (e.g., plain text vs. structured list) and what 'applicable' means in the current context. Given that there is no output schema or annotations, a bit more detail—such as 'returns a list of convention identifiers'—would improve completeness. Still, it is not severely lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and the schema is empty (100% coverage trivially). According to the scoring guidelines, a baseline of 4 is appropriate for 0-parameter tools. The description does not need to explain parameters because none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and a clear resource ('applicable coding conventions'). It is unambiguous and does not conflate with siblings like graphex_query (query) or graphex_glossary (glossary). However, it does not explicitly differentiate from them, though the resource itself is distinct enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It merely states the action without context such as 'use this when you need the list before proposing changes' or any exclusions. An agent would have to infer when it is applicable, which is a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graphex_glossaryC

Look up domain glossary terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
termNo

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full responsibility for behavioral disclosure. It only states the action with zero additional context about side effects, read-only nature, error behavior, or output characteristics, failing to inform the agent beyond the basic verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action without any extraneous words. Every character earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks essential details such as return format, behavior when the optional parameter is omitted, or any constraints. Given the absence of an output schema and the sparse parameter info, the description is inadequate for an agent to confidently invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one optional parameter 'term' with no description, and the tool description does not explain its meaning or behavior (e.g., what happens when omitted). With 0% schema description coverage, the description must compensate but does not, leaving parameter semantics entirely undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'look up' and a clear resource 'domain glossary terms', making the tool's purpose unambiguous. It is readily distinguishable from sibling tools like graphex_query or graphex_conventions without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. While the purpose implies its use, there is no explicit context for selection, leaving agents to infer conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graphex_queryD

Project knowledge-graph context (tier-filtered).

ParametersJSON Schema
NameRequiredDescriptionDefault
budgetNo
patternNo

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't mention whether the operation is read-only, what kind of output to expect, or any side effects. 'Tier-filtered' hints at a behavior but leaves it unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this is under-specification rather than conciseness. A single vague phrase conveys almost no actionable information and does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a query tool with two optional parameters and no output schema, this description provides nowhere near enough context to invoke it correctly. It fails to explain the purpose, parameters, or expected behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema defines two parameters (budget and pattern) with 0% description coverage, and the tool description says nothing about them. Agents are left with no idea what these parameters control or how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Project knowledge-graph context' but doesn't specify the action or resource. 'Tier-filtered' is ambiguous, and there's no differentiation from siblings like graphex_glossary or graphex_conventions. An agent cannot tell what this tool actually does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus any of the eight siblings. No context, no exclusions, no alternatives. The description offers zero help in selecting the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graphex_statusA

Graph statistics: node/edge counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavior. It mentions 'statistics' but does not explicitly state that it is a read-only operation, does not describe output format, potential errors, or any side effects. The description is too thin to give an agent confidence about what to expect beyond the basic counts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is minimal—a single colon-separated phrase—with no wasted words. It is front-loaded with the core idea and is appropriately sized for a tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no annotations, no output schema), the description is nearly complete. It tells an agent what the tool does and what it returns conceptually (node/edge counts). However, it omits details like whether the counts reflect the entire graph or a current state, and it does not mention if there is any filtering or scope. Still, for a trivial status tool, the coverage is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the baseline is 4 per the rubric. The schema is empty, and the description adds no parameter information, but none is needed. The description adequately communicates that no inputs are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Graph statistics' with the detail 'node/edge counts.' It clearly identifies what the tool does and is distinct from sibling tools like graphex_query or graphex_glossary, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus siblings. The description does not mention alternatives, prerequisites, or context—it simply states what it does. For a tool that provides stats, an agent might need to know when to call it instead of a query, but no such direction is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_beliefB

Record an evidence-anchored belief about the code (lands as Proposed for human approval; staleness-checked against history from the moment it exists). evidence entries are "path:start-end" (1-based, inclusive lines at the current changeset); paths are repo-relative paths or globs; symbols are "path:Name". At least one of evidence/paths/symbols is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNo
claimYes
pathsNo
symbolsNo
evidenceNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose meaningful behavior: the record lands as 'Proposed for human approval' and is 'staleness-checked against history from the moment it exists.' This adds real value. However, it does not state the return/response shape, failure behavior, or any side effects beyond the proposal status — a notable gap for a write operation with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with the core purpose front-loaded, followed by format specs and the constraint. The format specifications are packed tightly and each sentence earns its place. Slightly heavy on the type-notation details, but nothing is wasted — appropriately concise for the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given five parameters, no annotations, and no output schema, the description covers the critical input semantics and constraint well but leaves gaps: 'claim' and 'tier' are unexplained, the response/proposal-approval flow is only hinted at, and the 'staleness' mechanism is mentioned without elaboration. It is workable for a competent agent but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate — and it largely does. It explains evidence format ('path:start-end', 1-based inclusive lines), paths ('repo-relative paths or globs'), symbols ('path:Name'), and the mutual-requirement constraint. This adds substantial meaning beyond the bare schema. However, the 'claim' and 'tier' parameters receive no explanation, which keeps this from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Record an evidence-anchored belief about the code') and adds a distinguishing detail: the belief 'lands as Proposed for human approval'. This differentiates it from siblings like reaffirm_belief (which presumably updates an existing belief) and propose_changeset, but it does not explicitly name the sibling it is not, so a small inference gap remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use vs when-not-to guidance and names no alternative tool. While 'At least one of evidence/paths/symbols is required' clarifies a precondition, it never routes the agent to reaffirm_belief for updating existing beliefs or explains when proposal vs. direct record is appropriate. The contrast with reaffirm_belief is left entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_changesetC

Promote pending timeline entries into a changeset.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNo
messageYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. The verb 'promote' implies a state-changing operation, but the description never states what actually happens to the timeline entries (are they consumed, deleted, marked?), whether changes are reversible, whether authorization is required, or what the tool returns. Consequences of the mutation are entirely undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is grammatically efficient and front-loads the core action with no wasted words. However, it is under-specified: for a tool with an undocumented required parameter, this brevity crosses from conciseness into incompleteness. It reads cleanly but does too little documentation work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is the only documentation for a state-changing tool. It fails to explain the `message`/`intent` parameters, the side effects of promotion, or what a changeset is. Notably the JSON response wasn't part of this review, but without a schema defining the return, an agent cannot know what to expect after invoking it. Inadequate for a mutation with undocumented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate at all — it never mentions `message` (required) or `intent` (optional). The agent has no idea what these values should contain (e.g., is `message` a commit note? does `intent` describe the change's purpose?). With zero coverage and zero description help, both parameters are effectively opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Promote pending timeline entries into a changeset.' The verb+resource is clear, but it does not distinguish itself from its 'propose_' siblings (propose_graph_update, propose_belief). Also relies on undefined domain jargon ('timeline entries', 'changeset') which assumes context. Clear but no sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus propose_graph_update or propose_belief. There is no stated condition, prerequisite, or when-not-to-use guidance. The reader can only infer usage from the name, which is not sufficient routing information among three similarly-named siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_graph_updateC

Propose a new graph node (lands as Proposed for human approval).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
tierNo
node_typeYes
descriptionYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It discloses that the proposal lands for human approval (a state-change), which is useful. However, it does not explain what happens after proposal, whether it can be undone, permissions required, or what the response looks like. For a mutating tool with no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no fluff. It front-loads the action and outcome. However, it is almost too brief—it sacrifices needed behavioral context for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, no annotations, and no parameter documentation, this description is insufficient for an agent to call the tool correctly. The tool involves proposing a node with multiple parameters, yet only the high-level purpose is stated. The agent would need to infer parameter semantics from names alone, which is risky. Sibling differentiation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions none of the four parameters (name, tier, node_type, description). The description gives no meaning beyond what the schema types imply (strings). With zero coverage and no parameter details, an agent is left guessing about required values, constraints, or relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (Propose) and resource (graph node), with a distinctive outcome (lands as Proposed for human approval). It does not explicitly differentiate from sibling tools like propose_changeset or propose_belief, though the phrase 'graph node' hints at a different domain. It is not a tautology but could be more specific about what 'graph node' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It implies a workflow of proposing for human approval, but does not mention exclusions or alternatives. Sibling tools like propose_changeset, propose_belief, and reaffirm_belief exist in the same namespace, and without any usage guidance an agent might select the wrong one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reaffirm_beliefA

Re-anchor a belief at the current changeset after you have re-verified it against the code (e.g. a stale-candidate whose claim still holds). Optional new evidence spans replace the old ones. Not allowed for invalidated beliefs — their grounds are gone; propose a new belief with current evidence instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
beliefYesbelief id or exact claim
evidenceNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that it re-anchors at the current changeset, that new evidence replaces old ones, and that it rejects invalidated beliefs. It doesn't state side effects like whether it creates a new changeset or overwrites prior anchors, but the core behavior is adequately transparent for a belief-management operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is front-loaded, followed by a clarifying example and a crisp restriction. Every sentence carries essential information, making it efficient and easily parseable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two simple parameters, no output schema, and no nested objects, the description covers the essential aspects: action, target, optional behavior, and an explicit exclusion. It doesn't address edge cases like invalid belief IDs or failure modes, but those are not critical given the tool's simplicity and the presence of sibling tools for broader context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (belief has a schema description, evidence does not). The description adds crucial meaning by explaining that 'evidence' is optional and that new evidence spans replace old ones, compensating for the schema's lack of description on that parameter. The belief parameter is reinforced by the overall context, though it doesn't add new syntax-level detail beyond 'id or exact claim'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Re-anchor a belief') on a specific resource ('belief') and gives a concrete use case (stale-candidate whose claim still holds). It also contrasts with an alternative ('propose a new belief... instead'), which distinguishes it from siblings like propose_belief without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('after you have re-verified it against the code'), when not allowed ('Not allowed for invalidated beliefs'), and points to the alternative ('propose a new belief with current evidence instead'). This gives clear, actionable guidance for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_costA

Attribute your token/compute usage to a changeset (the id returned by propose_changeset). Reports accumulate. cost_microdollars is integer micro-dollars (1 = $0.000001).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
changesetYes
input_tokensNo
cached_tokensNo
output_tokensNo
cost_microdollarsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that reports accumulate (additive behavior) and clarifies the unit of cost_microdollars. However, it does not mention whether the operation is a write or if it has side effects beyond attribution, nor does it describe error behavior or reversibility. It adds some context but not comprehensive transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and includes crucial unit clarification. No extraneous words. It could be more structured (e.g., separating parameter notes), but it is efficient and well-ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple reporting tool, the description provides key facts: the source of the changeset id and the accumulation behavior. However, with no annotations and no output schema, it omits details like what happens on success/failure, whether all token fields are required together, or how to handle partial reports. The absence of any explanation of the remaining numeric fields leaves gaps for an agent trying to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all six parameters. It only explains changeset (source of value) and cost_microdollars (unit). The other parameters (model, input_tokens, cached_tokens, output_tokens) are left to their names, which are not fully self-explanatory (e.g., what counts as cached_tokens?). This falls short of adequate compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Attribute') and a clear resource ('token/compute usage to a changeset'), and precisely identifies the source of the changeset id ('returned by propose_changeset'). This leaves no doubt what the tool does and distinguishes it from sibling tools like propose_changeset or propose_graph_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear prerequisite: the changeset must be the id returned by propose_changeset, which tells the agent when this tool is appropriate. It also states that reports accumulate, implying multiple calls are allowed. However, it does not explicitly list when NOT to use it or mention alternative tools for cost tracking, so it's slightly short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedgraphex_conventions
    • First observedgraphex_glossary
    • First observedgraphex_query
    • First observedgraphex_status
    • First observedpropose_belief
    • First observedpropose_changeset
    • First observedpropose_graph_update
    • First observedreaffirm_belief
    • First observedreport_cost

TDQS

B3/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a distinct purpose: query, status, glossary, conventions, and then actions for proposing changesets, graph updates, beliefs, reaffirming beliefs, and cost reporting. No two tools overlap in functionality; even the related belief tools are clearly differentiated (new vs. reaffirm).

Naming Consistency4/5

The tools are grouped semantically: 'graphex_' prefix for read-only graph queries, and verb-based names (propose_, reaffirm_, report_) for actions. This is consistent within each group, but there is a mix of naming styles (prefix vs. verb) across the set, making it slightly less uniform than a pure verb_noun convention.

Tool Count5/5

Nine tools is well within the ideal range and each tool serves a clear, necessary function for the server's purpose of knowledge-graph interaction and change proposal. No redundant or missing tools are apparent.

Completeness4/5

The surface covers the core workflows: querying graph context, checking status, looking up glossary/conventions, proposing changes (changeset, graph update, belief), reaffirming beliefs, and reporting cost. Minor gaps like listing existing beliefs or changesets are not directly present, but the design intentionally routes proposals to human approval, so those may be handled externally.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Local-first memory layer for AI coding agents — captures issues, attempts, fixes, and decisions, and warns at git commit before you repeat a mistake.
    17
    850
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Local-first deterministic project memory for AI coding agents, with context packs, decisions, gates, risks, scoped claims and explicit checkpoints in project-owned files.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI coding agents persistent, branch-aware memory and a dependency-tracked task graph by storing decisions, lessons, and tasks as plain JSON and Markdown committed directly into the repository. Agents can record and fuzzy-search past decisions, dump instant project context, and create, claim, complete, and query tasks whose completion automatically unblocks downstream work.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI coding agents with git-native persistent memory and a dependency-aware task graph, letting them record and fuzzy-recall architectural decisions, lessons, and gotchas while creating, claiming, and completing tasks that auto-unblock downstream work. Stores everything as plain JSON and Markdown committed inside the repository, so context stays branch-aware, team-shared, and reviewable in pull requests.
    9 npm
    MIT