Skip to main content
Glama

common-context-mcp

🧠 common-context-mcp

Shared, append-only context store for AI agents β€” over the Model Context Protocol (MCP).

Agents checkpoint their work, record failures, claim files, hand off tasks, and recover after crashes β€” so the next agent starts exactly where the last one stopped.

npm version npm downloads License: MIT Node.js β‰₯ 18 CI Glama MCP

Built by Gokulanand Β· Agent Orchestration Β· Knowledge & Memory Β· Developer Tools


🎬 See it in action

Add your own demo GIF below β€” record a terminal session with asciinema or ttygif, save it as docs/demo.gif, and uncomment the line:


Related MCP server: Casefile

πŸš€ Quick start

1. Install

npm install -g common-context-mcp
common-context-mcp-setup

The setup step detects your AI tools (Claude Code, Codex, Cursor, Gemini, OpenCode) and wires up the MCP server + protocol block for each one you pick.

2. Use it in any project

# Start a session β€” loads what the team already knows
common-context-mcp load_context

# Save a checkpoint after meaningful work
common-context-mcp save_context \
  --key "progress" \
  --value "Implemented the login handler"

# Record a failure so nobody repeats it
common-context-mcp save_failure \
  --approach "tried X" \
  --why_failed "X timed out under load"

# Close the session with a summary before your final answer
common-context-mcp save_summary \
  --title "Login handler" \
  --accomplished "Handler implemented and tested"

⚑ The protocol (mandatory, every message)

The server sends these instructions to every connected agent. Follow them in order:

#

Step

Tool

Why

1

Load first

load_context

Before any other tool or reply β€” starts your session

2

Checkpoint

save_context

After every meaningful step β€” this is your save point

3

Record failures

save_failure β†’ search_context

Immediately on error, then search before any alternative

4

Claim files

claim_area β†’ release_area

Before/after editing a shared file β€” avoids collisions

5

Summarize

save_summary

Before your final answer β€” marks the session complete


πŸ› οΈ Tools reference

Tool

Purpose

Read-only

load_context

Start a session; load shared state, recent sessions, failures, interrupted work

save_context

Save a fact/decision/config under a key; overwrites keep history

save_summary

Close session with accomplished, learned, decisions, next steps

save_failure

Record a failed approach and why, so future agents see it

record_success

Record an approach that worked, so it's preferred next time

search_context

Case-insensitive search across contexts, sessions, failures, broadcasts

βœ“

claim_area

Claim a file/area so others avoid it (auto-expires)

release_area

Release a claimed area

list_claims

List all currently active (unexpired) area claims

βœ“

broadcast

Send a decision or message to all agents

handoff

Transfer work to another agent with full context

get_patterns

Learned patterns: what works and what fails, with counts

βœ“

get_audit_trail

Recent sessions, failures, claims β€” most recent first

βœ“

resume_session

Take over an interrupted session (refuses completed/live ones)

session_status

Store health: size, counts, interrupted sessions, estimated tokens

βœ“

Every tool except load_context and search_context requires load_context to have run first in that session.


πŸ€– Supported agents

Agent

Config written to

Protocol block

Enforcement

Claude Code

~/.claude.json

~/.claude/CLAUDE.md

~/.claude/settings.json hooks

Codex CLI

$CODEX_HOME/config.toml

AGENTS.override.md / AGENTS.md

[[hooks]] in config.toml

Cursor

~/.cursor/mcp.json

Manual paste from setup

~/.cursor/hooks.json

Gemini CLI

~/.gemini/settings.json

~/.gemini/GEMINI.md

hooks in settings.json

OpenCode

~/.config/opencode/opencode.json

~/.config/opencode/AGENTS.md

Plugin at ~/.config/opencode/plugins/common-context/index.js

Text outside the managed block is never touched; reruns replace only that block.


βš™οΈ Configuration

Variable

Default

Meaning

CONTEXT_MCP_PROJECT_DIR

working directory

Project folder; its store is common-context.json inside

CONTEXT_MCP_FILE

<project>/common-context.json

Store file, overriding the project folder

CONTEXT_MCP_AGENT_ID

random per process

Stable agent identity (e.g. claude-code-laptop)

CONTEXT_MCP_STALE_MINUTES

15

Idle time before a session is marked dead

CONTEXT_MCP_CLAIM_MINUTES

30

Claim lifetime without renewal

CONTEXT_MCP_MAX_OUTPUT_CHARS

40000

Cap on any single tool response

CONTEXT_MCP_LOAD_BUDGET_CHARS

6000

Max chars the brief load_context view may produce

CONTEXT_MCP_ARCHIVE_SESSIONS

100

Completed sessions kept; older ones move to archive

CONTEXT_MCP_ARCHIVE_DAYS

30

Completed sessions older than this move to archive

CONTEXT_MCP_LOG_LEVEL

warn

error, warn, info, or debug

CONTEXT_MCP_LOG

text

text or json log lines on stderr

CONTEXT_MCP_NO_SETUP

unset

Skip setup prompt after global install

CONTEXT_MCP_NO_HOOKS

unset

Skip Claude Code enforcement hooks in --yes mode

CONTEXT_MCP_ENFORCE

unset

Set to 0 to turn off Claude Code enforcement at runtime


πŸ”„ Multi-agent behaviour

  • Heartbeats. Each write refreshes its session's heartbeat. When an agent calls load_context, any session whose heartbeat is older than CONTEXT_MCP_STALE_MINUTES is marked interrupted. Sessions still heartbeating are listed as active elsewhere.

  • Claims. A claim blocks other agents until it expires or is released. Expired claims are removed on the next load_context.

  • Resuming. resume_session refuses completed sessions and sessions another live agent is heartbeating β€” two agents can't drive the same session.

If a task involves long silent stretches, call save_context or session_status periodically, or raise CONTEXT_MCP_STALE_MINUTES.


πŸ’Ύ Storage & safety

  • File. One JSON file (common-context.json per project folder). Writes go to a temp file and are renamed into place β€” a crash never leaves a half-written store.

  • Locking. Mutations run under <store>.lock (exclusive create). A lock older than 10 seconds is treated as crash-left-behind and removed.

  • Corruption. An unreadable store is copied to <store>.corrupt-<timestamp> before a fresh store starts. Nothing is silently discarded.

  • Schema. Schema v2 is current. Older v1 stores upgrade on first write. A newer schema is refused rather than overwritten.

  • Permissions. File created with mode 0600.

  • Growth. Nothing is deleted. load_context shows recent items; older ones are reachable via search_context and get_audit_trail. session_status warns when the store is large.

  • Secrets. The store is plain text β€” do not save credentials or tokens with save_context.


🩺 Health check

common-context-mcp doctor

Checks Node version, binary on PATH, store writability, read/lock capability, interrupted sessions, and agent registration. Exits non-zero if anything's broken.

common-context-mcp doctor --tokens

Shows estimated token cost of each part agents see every session.


πŸ› οΈ Development

npm install          # install dependencies
npm run build        # compile src/ to dist/
npm run typecheck    # TypeScript strict check
npm test             # build, then run the test suite

CI runs on Node 18, 20, 22 (ubuntu + macOS). The suite covers cross-process locking with real concurrent processes, corruption and schema handling, the full MCP tool surface over stdio, and the installer against a temporary HOME.


🀝 Contributing

Contributions are welcome!

  1. Fork the repo and create a feature branch from main

  2. Add or update tests for any behavior change

  3. Run npm test and npm run typecheck

  4. Open a pull request describing what changed and why

See CHANGELOG.md for release history and LICENSE for the MIT license.



Built and maintained by Gokulanand.
If this helps your agents stay in sync, ⭐ star the repo β€” it helps others discover it.


License

MIT

Available Tools

15 tools
broadcastB

Broadcast a decision/message to all agents.

NameRequiredDescriptionDefault
messageYesMessage to broadcast to all agents

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose readOnlyHint=false, so the agent knows this is not a read-only operation. The description adds that the message goes to all agents, but it does not explain delivery behavior, permissions, rate limits, or whether the broadcast is reversible.

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 front-loaded sentence with no filler. Every word contributes to stating the action and audience.

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 low-complexity tool with one fully documented required parameter and no output schema, the description gives enough to invoke it correctly. It identifies the audience, though it could say more about when to use it or what delivery implies.

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

Parameters3/5

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

Schema description coverage is 100%, so the single message parameter is fully documented in the schema. The description adds little beyond the schema and does not provide format or content guidance, which is acceptable at the baseline when the schema does the heavy lifting.

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 (Broadcast) and resource/audience (decision/message to all agents), making the tool's function clear. It is distinguishable from the context- and session-oriented siblings, though it does not explicitly name an alternative.

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 only gives a purpose statement, not when to use this tool versus alternatives or when not to use it. There are no prerequisites, exclusions, or comparison to siblings such as save_context or handoff.

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

claim_areaA

Claim a file or area so other agents avoid it. Expires after CONTEXT_MCP_CLAIM_MINUTES (default 30).

NameRequiredDescriptionDefault
areaYesFile path or area to claim

TDQS

A3.5/5.0
Behavior3/5

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

Beyond the readOnlyHint=false annotation, the description discloses a genuine behavioral trait: claims auto-expire after CONTEXT_MCP_CLAIM_MINUTES (default 30), which tells the agent reservations are not permanent. However, for a mutation tool it omits the critical conflict semantics β€” what happens if another agent already holds the claim, whether the call fails or overwrites, and whether the caller receives a token needed later for release.

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 short sentences, both earning their place: the first states action and effect, the second states lifetime and its configuration knob. The most decision-relevant information is front-loaded with zero filler.

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?

The expiry model is covered, which is important, but there is no output schema and the description never indicates what a successful call returns or how failures on an already-claimed area surface. For a coordination primitive with concurrency implications, that leaves a meaningful gap.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is documented as "File path or area to claim," so the description adds nothing beyond it. Baseline 3 applies when the schema already fully documents a one-parameter input.

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 gives a specific verb and resource ("Claim a file or area") plus a stated purpose ("so other agents avoid it"), which separates it from release_area and list_claims without naming them. It stops short of explicitly routing to those siblings, so it is clear but not maximally differentiated.

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

Usage Guidelines3/5

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

The rationale sentence implies when to call it (before working on a shared area), and the expiry line implies a time-bound reservation model. There is no explicit when-not-to-use guidance, no mention of what to do if the claim is already held, and no reference to release_area as the lifecycle counterpart.

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

get_audit_trailA
Read-only

Get the audit trail of sessions, failures and claims (most recent first, capped).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description usefully adds ordering ('most recent first') and warns of truncation ('capped'), which is real behavioral value β€” but it never says what the cap is or whether older entries are retrievable, leaving the truncation risk underspecified.

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?

A single sentence with zero waste, and the key behavioral caveats (ordering, capping) are placed inline where they are immediately visible.

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 zero-parameter read tool with no output schema, the agent still needs to know the cap size, whether older history is reachable elsewhere, and roughly what the returned entries look like. The description names the record types but omits those details.

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 takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies.

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?

Specific verb ('Get') plus a concrete resource ('audit trail') and an enumeration of what the trail contains: sessions, failures, claims. It is clearly distinguishable from siblings like list_claims or session_status, though it never names a sibling to route against.

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

Usage Guidelines3/5

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

The content list implies the tool is for reviewing recent history, but there is no explicit when-to-use statement, no exclusion, and no pointer to alternatives such as list_claims when only claims are wanted.

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

get_patternsB
Read-only

Get learned patterns (what works and what fails).

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

readOnlyHint=true already covers the safety profile, so the description only needs to add context. It adds nothing about scope (global vs session), volume, filtering options, or cost β€” an agent cannot tell whether this returns a handful of entries or the entire pattern history.

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?

A single front-loaded sentence with no filler. It is arguably too terse rather than too long, but every word 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?

There is no output schema, so the description carries the burden of describing the return value, and it does not β€” no format, no fields, no ordering, no empty-state behavior. For a retrieval tool with a parameterless schema, that leaves the agent guessing what it will receive.

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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. It correctly implies a no-argument, unfiltered retrieval.

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?

States a specific verb ('get') and resource ('learned patterns') and the parenthetical clarifies that patterns cover successes and failures, so an agent knows roughly what comes back. It does not distinguish this from siblings that also surface stored knowledge, such as search_context or get_audit_trail.

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 indication of when to call this instead of search_context, get_audit_trail, or session_status, and no mention of a prerequisite such as patterns existing because record_success/save_failure have been used. The agent must infer usage entirely.

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

handoffA

Transfer work to another agent with full context. Records a completed handoff session and a broadcast.

NameRequiredDescriptionDefault
contextYesFull context for the receiving agent
summaryYesWhat's being handed off
to_agentYesTarget agent identifier

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint=false annotation already signals mutation, and the description adds useful detail that this records a completed handoff session and a broadcast. It does not explain the permanence of these records, authorization requirements, or the audience/effects of the broadcast, so it provides moderate but not rich behavioral context.

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, front-loaded with the core action and then the primary side effects. Every sentence adds useful information with no waste.

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?

The description is sufficient to understand the basic operation and its dual side effects. However, for a mutating handoff tool with no output schema, it does not describe what the broadcast entails, who receives it, or whether the handoff can be undone.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents to_agent, summary, and context. The description adds no parameter-specific meaning beyond what the schema provides, which is acceptable given full schema coverage.

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: transferring work to another agent. It also clarifies that the action records a handoff session and a broadcast, but it does not explicitly differentiate this from siblings such as broadcast, save_context, or resume_session.

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

Usage Guidelines3/5

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

The intended use case is implied by 'Transfer work to another agent with full context,' giving the agent enough context to know this is for handing off work. However, there are no explicit when-not conditions or comparisons to alternatives like save_context or broadcast.

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

list_claimsA
Read-only

List all currently active (unexpired) area claims.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description contributes the meaningful filter semantics that only unexpired claims are returned β€” useful since there are no parameters to express that. It stops short of describing result volume or whether claims from other sessions are included.

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?

One sentence, front-loaded with the verb, and every word β€” including 'unexpired' β€” carries information. No filler.

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?

There is no output schema, so the description is the only place to learn what a returned claim contains (owner, scope, expiry) and whether results are paginated or session-scoped. For an otherwise simple zero-param read, that omission is the main remaining gap.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No misleading parameter language is present.

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?

States a specific verb and resource: 'List all currently active (unexpired) area claims.' The scope qualifier 'active (unexpired)' distinguishes it from sibling claim_area (which creates claims) and from release_area, though it does not name those siblings explicitly.

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

Usage Guidelines3/5

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

The word 'active (unexpired)' implies when the tool is relevant, but the description never states when to call this versus related tools like get_audit_trail, session_status, or claim_area, and offers no prerequisites or exclusions.

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

load_contextA

Start a session and load shared context: other agents' work, recent sessions, failures to avoid. Brief by default.

NameRequiredDescriptionDefault
detailNobrief (default) or full, which is everything in the store

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses that this starts a session and loads specific categories of shared context, which goes beyond the readOnlyHint=false annotation. However, it does not clarify side effects of starting a session, whether it replaces an existing session, or what permissions/state changes are involved.

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 definition is front-loaded, compact, and structured: it first states the action and then lists the context loaded, followed by the default mode. Every clause contributes useful information without waste.

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 tool with no output schema, the description gives a useful high-level summary of what context is returned. It remains incomplete about output shape, brief-versus-full differences, and session lifecycle effects, which are important for correct invocation in this session-oriented toolset.

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

Parameters3/5

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

Schema description coverage is 100%, and the single detail parameter is fully documented in the schema with its enum and default. The description's 'Brief by default' mirrors schema information without adding further parameter semantics.

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: start a session and load shared context, including concrete content categories like other agents' work, recent sessions, and failures. It is distinguishable from save/record tools, but it does not explicitly differentiate itself from resume_session or search_context.

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

Usage Guidelines3/5

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

The phrase 'Start a session' implies the primary usage moment, but the description does not explicitly say when to use this versus alternatives such as resume_session or search_context. No exclusions or alternative-routing guidance are provided.

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

record_successA

Record an approach that worked, so future agents prefer it.

NameRequiredDescriptionDefault
approachYesThe approach that worked

TDQS

A3.6/5.0
Behavior3/5

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

Only readOnlyHint=false is annotated, so the description carries most of the behavioral burden; it does add valuable context that the record is meant to shape future agents' preferences. It does not disclose what happens on duplicate or conflicting approaches, whether entries can be overwritten or removed, or what the write returns.

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?

One short sentence with zero filler, and the core action is front-loaded before the rationale clause. Nothing here is wasted or buried.

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 trivial one-parameter write tool with no output schema and minimal annotations, the description covers the essential action and its purpose. It omits how records are scoped, deduplicated, or later surfaced (presumably via get_patterns), which would have made it fully self-contained.

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

Parameters3/5

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

Schema coverage is 100% with a single well-documented parameter, so the baseline is 3. The description restates the parameter's meaning ('an approach that worked') but adds nothing about content expectations, granularity, or how the 2000-character limit should be used.

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?

A specific verb and object ('Record an approach that worked') make the operation unambiguous, and the trailing clause explains its downstream effect. It does not, however, distinguish itself from close siblings like save_failure or save_context, so an agent must infer the boundary from the name alone.

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

Usage Guidelines3/5

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

The phrase 'an approach that worked' implies the trigger condition for calling it, but there is no explicit guidance on when to prefer this over save_context, save_summary, or save_failure, and no exclusions or prerequisites. Usage is inferable rather than stated.

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

release_areaB

Release a claimed area.

NameRequiredDescriptionDefault
areaYesFile path or area to release

TDQS

B3.2/5.0
Behavior2/5

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

The only annotation is readOnlyHint=false, so the agent knows this mutates state but nothing about consequences: whether the claim is destroyed permanently, whether release fails if the area is unclaimed or held by someone else, whether it is idempotent, or what error shapes to expect. For a state-mutating tool with a single thin annotation, the description carries most of the burden and does not discharge it.

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?

A single front-loaded sentence with no filler, which is the right shape for a one-parameter tool. However, the brevity tips into under-specification rather than disciplined concision β€” one more clause about ownership or failure behavior would have earned 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?

The tool is structurally simple (one required string, no output schema), so the description does not need to explain return values. But for a claim-lifecycle mutation sitting among claim_area, list_claims, and handoff, the description omits the lifecycle context an agent needs to call it safely β€” chiefly who may release and what happens on a stale or unowned area.

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

Parameters3/5

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

Schema coverage is 100% and the 'area' property is documented as 'File path or area to release', so the description adds nothing the schema does not already say. Baseline 3 applies: the schema does the work, and the description neither helps nor harms, though it could have clarified expected path form or how to obtain a valid area name.

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 names a specific verb ('Release') and resource ('a claimed area'), which is more precise than the bare tool name because it scopes the target to areas that are already claimed. It does not explicitly name the inverse sibling claim_area, but the operation is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: 'release a claimed area' suggests this is the inverse of claim_area and should be called when a claimed area is no longer needed. There is no explicit when-to-use, no prerequisite (must you be the claim holder?), and no mention of list_claims as a way to find the area name.

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

resume_sessionA

Take over an interrupted session under this agent. Refuses completed sessions and ones another live agent is using.

NameRequiredDescriptionDefault
session_idYesSession ID to resume (from load_context output)

TDQS

A4/5.0
Behavior4/5

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

readOnlyHint=false tells the agent this mutates state, and the description adds genuinely non-structured behavior: the tool refuses completed sessions and sessions held by another live agent, and it transfers ownership to the calling agent. It does not say what happens to the prior owner's context or how a refusal surfaces (error vs. message).

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 short sentences, no filler, with the core action front-loaded and the eligibility constraints immediately after. Every clause carries information the agent needs.

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 single-parameter, state-mutating tool with only readOnlyHint in annotations and no output schema, the description covers the eligibility rules and the ownership effect that the schema cannot express. It stops short of describing the return value or the failure mode, which would matter for a takeover operation.

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

Parameters3/5

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

Only one parameter and the schema already documents it fully at 100% coverage, including the "from load_context output" provenance hint. The description adds nothing further about the session_id, so the baseline 3 applies.

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?

"Take over an interrupted session under this agent" is a specific verb plus resource, and the second sentence narrows the eligible state. It is clearly distinct from save_* / record_success siblings, though it does not name a sibling explicitly or tie itself to session_status or claim_area.

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?

The preconditions are stated: the session must be interrupted (not completed) and not held by another live agent. This gives real when-to-use and when-not-to-use signals. What is missing is a prescribed alternative β€” e.g., check session_status first, or use claim_area when the session is live.

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

save_contextA

Save a fact, decision or config under a key. This is the checkpoint. Overwriting keeps the old value in history.

NameRequiredDescriptionDefault
keyYesUnique key for this context entry
tagsNoTags for categorization
valueYesThe value/content to store

TDQS

A3.7/5.0
Behavior4/5

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

Beyond readOnlyHint=false, the description discloses real mutation behavior: keyed upsert semantics and the fact that overwriting preserves the old value in history, which tells an agent that a write is recoverable and non-destructive. It stops short of saying whether tags are replaced on overwrite or whether the previous value is returned, which matter for a checkpoint tool.

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 short sentences, front-loaded with the action and immediately followed by the behavioral caveat about overwriting. "This is the checkpoint" is slightly oblique but frames the tool's role economically; nothing else is wasted.

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 three-parameter, fully documented write tool with no output schema, the definition covers purpose, mutation safety, and history retention adequately. Minor gaps remain around what the call returns and how tags behave on overwrite, but nothing prevents correct invocation.

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

Parameters3/5

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

Schema coverage is 100% (key, value, tags all documented with types and limits), so the baseline is 3. The description adds only the idea that values are facts, decisions, or config, and that the key address is unique and overwritable; it adds no tag semantics or format guidance beyond the schema.

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?

States a specific verb (save) and resource (a fact, decision or config under a key), so the write-and-key semantics are clear. It does not, however, distinguish itself from the specialized siblings save_summary, save_failure, and record_success, which also write content, so an agent must infer which store to use.

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

Usage Guidelines3/5

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

"This is the checkpoint" suggests a role, but there is no explicit when-to-use clause, no exclusion, and no named alternative among the many writing siblings. The usage is implied rather than stated.

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

save_failureB

Record a failed approach IMMEDIATELY when something doesn't work.

NameRequiredDescriptionDefault
approachYesWhat was attempted
why_failedYesWhy it failed

TDQS

B3.4/5.0
Behavior3/5

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

The annotations only declare readOnlyHint=false, so the description carries most of the behavioral burden. "Record ... IMMEDIATELY" is consistent with a write operation and adds timing urgency, but nothing is said about persistence scope, deduplication of repeated failures, or whether entries are later surfaced via get_patterns / search_context.

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?

A single front-loaded sentence with zero waste; the trigger condition is stated before any qualifier. The all-caps "IMMEDIATELY" is functional emphasis rather than filler, though the sentence is so short it leaves no room for the routing detail an agent needs.

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 two-parameter write tool with full schema coverage and no output schema, the description is minimally sufficient to call correctly. It is incomplete regarding how a recorded failure relates to the rest of the context/pattern toolset, which matters given fourteen siblings.

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

Parameters3/5

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

Schema description coverage is 100% with both required parameters (approach, why_failed) fully documented in the schema. The description adds no additional meaning about granularity, what counts as an "approach," or how specific why_failed should be, so baseline 3 applies.

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?

"Record a failed approach" states a specific verb and resource, and the tool is easily distinguished from siblings like save_context or record_success at the verb level. It does not, however, explicitly contrast itself with record_success, the closest sibling.

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

Usage Guidelines3/5

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

"IMMEDIATELY when something doesn't work" gives a clear trigger condition and timing emphasis, which is more than nothing. But it names no alternative, no exclusions, and no prerequisites (e.g. when to prefer save_summary or record_success instead), so usage is only implied.

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

save_summaryA

Save session summary at end of work. MANDATORY before giving final response. Marks session as complete.

NameRequiredDescriptionDefault
titleYesSession title
learnedNoWhat was learned (optional)
decisionsNoKey decisions made (optional)
next_stepsNoNext steps for future agents (optional)
accomplishedYesWhat was accomplished

TDQS

A3.7/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=false, so the description carries most of the burden and does add real value by disclosing the side effect that the session gets marked complete. It says nothing about whether repeated calls overwrite the previous summary, whether it is idempotent, or what happens if it is skipped β€” meaningful gaps for a state-changing tool.

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?

Three short sentences, no waste, with the timing constraint and the side effect both front-loaded. Nothing redundant with the schema or annotations.

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?

It covers the essentials β€” when to call and what state change results β€” for a five-parameter write tool with no output schema. However, it leaves open repeat-call semantics and how the saved summary relates to siblings like resume_session or handoff, which an agent would need to call this correctly in edge cases.

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

Parameters3/5

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

Schema description coverage is 100%, so all five fields (title, accomplished, learned, decisions, next_steps) are already documented with descriptions and length limits. The description adds no guidance on what content belongs in each field or how detailed they should be, so baseline 3 applies.

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?

Specific verb and resource ('Save session summary') plus a stated lifecycle effect ('Marks session as complete'), which separates it from a generic context write. It does not explicitly contrast with siblings like save_context or handoff, so differentiation is implied rather than stated.

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?

'MANDATORY before giving final response' gives an unambiguous trigger condition, and 'at end of work' scopes the timing. No alternatives or exclusions are named, so an agent must infer why it would pick this over save_context.

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

search_contextA
Read-only

Search shared context by keyword. Returns short excerpts with ids; use get_audit_trail or load_context detail "full" for more.

NameRequiredDescriptionDefault
limitNoMost results to return (default 8)
queryYesSearch query

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint=true already declares this a safe read, and the description adds genuinely new behavior: results are excerpts, not full documents, and each carries an id for follow-up. It does not mention result caps or pagination behavior, though the limit parameter partly covers that.

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 compact sentences, with the core action front-loaded and the alternative-tool guidance immediately after. No filler or duplication.

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

Completeness5/5

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

With no output schema, the description supplies the essential return contract (short excerpts with ids) and a next step for full content. Given a 2-parameter tool with 100% schema coverage and a readOnly annotation, nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both query and limit are already documented, including the default of 8 and max of 25. The description only restates that the search is keyword-based, adding no syntax, matching, or format guidance beyond the schema.

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?

States a specific verb and resource ('Search shared context') plus the retrieval unit ('by keyword') and return shape ('short excerpts with ids'). It names sibling tools (get_audit_trail, load_context) but only as fallbacks for depth, not as a clear differentiation of scope.

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?

Gives a clear use case (keyword search over shared context) and an explicit routing rule to alternatives when fuller detail is needed. It stops short of saying when NOT to use it or how it differs from a full context dump beyond the 'detail full' hint.

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

session_statusB
Read-only

Store health: size, counts, interrupted sessions, estimated tokens of context.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful detail about what status information is returned, but it does not clarify return format, metric definitions, or any other behavioral context beyond the basic contents.

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 compact phrase with zero waste, front-loading the core concept of store health followed by the key metrics. It is appropriately sized for a zero-parameter status tool.

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 read-only status tool with no output schema, the description gives a useful high-level list of returned information. However, terms like 'size' and 'counts' remain ambiguous, and the lack of usage guidance leaves the agent to infer when this tool is the right choice.

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 takes zero parameters, so the baseline is 4. The description correctly does not introduce unnecessary parameter discussion.

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 identifies the resource as store health and names the specific metrics reported: size, counts, interrupted sessions, and estimated tokens. It is clear enough to distinguish this as a status-inspection tool, though it does not explicitly differentiate itself from siblings like get_audit_trail or list_claims.

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 explicit guidance on when to use this tool versus alternatives such as resume_session, list_claims, or get_audit_trail. The name and description imply status checking, but the definition leaves usage entirely to inference.

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. 15 tool updatesv3.1.1
    • First observedbroadcast
    • First observedclaim_area
    • First observedget_audit_trail
    • First observedget_patterns
    • First observedhandoff
    • First observedlist_claims
    • First observedload_context
    • First observedrecord_success
    • First observedrelease_area
    • First observedresume_session
    • First observedsave_context
    • First observedsave_failure
    • First observedsave_summary
    • First observedsearch_context
    • First observedsession_status

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation4/5

Most tools map to a distinct resource+action, but the write-side has several similar-sounding verbs (save_context, save_summary, save_failure, record_success, broadcast) that require careful reading of descriptions to separate. The read side (load_context, search_context, get_patterns, get_audit_trail, session_status) is mostly clear, though load_context vs resume_session could be confused at a glance.

Naming Consistency4/5

Strong verb_noun convention dominates (load_context, save_context, claim_area, release_area, get_patterns, get_audit_trail). A few outliers break the pattern: broadcast, handoff, and session_status use bare verbs or noun phrases instead of verb_noun.

Tool Count5/5

15 tools sits at the top of the healthy range and each one maps to a real coordination concern (session lifecycle, memory, claims, handoff, audit). No tool appears redundant or filler.

Completeness4/5

The surface covers session lifecycle, persistence (facts/failures/successes), search, claims, broadcast, handoff and audit, which is solid for a shared-context server. Minor gaps: no delete/forget/expire operation for saved context, no bulk listing of keys, and no explicit force-release for stale claims.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted task tracker and MCP server for AI coding agents. Append-only case files preserve decisions, failed attempts, questions, and check results across sessions. A live web board lets people track progress and answer agents. Runs locally in Docker and connects to Claude Code, Codex, Cursor, and other Streamable HTTP MCP clients. MIT licensed.
    30
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables coding agents to persist and resume shared working stateβ€”tasks, progress, decisions, commands, tests, checkpoints, and handoffsβ€”backed by SQLite while keeping Git authoritative for files and repository state.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables multiple AI coding agents and humans to coordinate through a Git-native Markdown blackboard (.context/ + AGENTS.md), where they can inspect workspace overviews, claim and toggle ready tasks, record architecture decisions, synthesize shared prompts, and hand off work via atomic, lock-protected writes that prevent lost updates and formatting drift. It also serves a fully offline local web dashboard that live-syncs any blackboard change over WebSocket.
    7
    1
    MIT