Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.jarmstrong158/context-keeper

PYPI · CONTEXT-KEEPER-MCP · SCANNED AUG 3

Durable project-memory MCP: decisions, constraints, and pipelines across Claude sessions.

Available components

+6 this week 50 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency32
Schema Quality & AI Usability64
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 1839 tokens (~131/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

pypi · context-keeper-mcp

# add to Claude Code
claude mcp add jarmstrong158-context-keeper -- uvx context-keeper-mcp
# add to Codex CLI
codex mcp add jarmstrong158-context-keeper -- uvx context-keeper-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jarmstrong158-context-keeper": {
      "type": "local",
      "command": [
        "uvx",
        "context-keeper-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add jarmstrong158-context-keeper --command uvx --arg context-keeper-mcp
# ~/.hermes/config.yaml
mcp_servers:
  jarmstrong158-context-keeper:
    command: "uvx"
    args: ["context-keeper-mcp"]
// mcp.json
{
  "mcpServers": {
    "jarmstrong158-context-keeper": {
      "command": "uvx",
      "args": [
        "context-keeper-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +5
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Tool coverage: 100 → unverified functional
    • Capabilities: fail → unverified functional
    • Stability: unverified → 0.03 functional
    • MCP protocol: fail → pass functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 0.17.0 → 0.18.0 functional
  • 1 Aug 26 +19
    • First check of Stability: unverified security
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: good functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 99 functional
    • First check of Schema quality: fail functional
    • First check of MCP protocol: fail functional
    • Package version: 0.15.0 → 0.17.0 functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 28 Jul 26 0
    • Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
    • Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
  • 26 Jul 26 44

    First indexed and scored.

    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed pypi/[email protected]

Provenance none

Ecosystem: pypi · Outcome: none

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build
Dependencies 0 packages

0 packages in the resolved dependency tree.

MCP tools — 14 exposed · ~1,839 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
deprecate_entry ~135

Mark an entry as deprecated. For decisions, optionally link to the superseding decision.

NameTypeReqDescription
idstringyesEntry ID to deprecate
merge_intostringDedup merge: fold this entry's unique content into this same-type target, then deprecate this one with superseded_by=target. Non-destructive — the target is only added to.
project_dirstringAbsolute path to another project whose entry should be deprecated
reasonstringyesWhy this is being deprecated
superseded_bystringID of the replacing decision (decisions only)

No output schema declared.

No examples provided.

export_markdown ~67

Regenerate DECISIONS.md from the decisions store — a derived, read-only projection; overwrites the file whole.

NameTypeReqDescription
pathstringOutput path relative to project root. Default: config markdown_export.path.
project_dirstringAbsolute path to the target project.

No output schema declared.

No examples provided.

export_snapshot ~86

Write the whole store to a compressed, committable snapshot at .context-keeper/memory.json.gz (next to the project) and add a .gitattributes merge=ours guard. For sharing project memory with a team via git. Committing it is opt-in. Non-destructive to the working store.

NameTypeReqDescription
project_dirstringAbsolute path to the target project.

No output schema declared.

No examples provided.

get_compaction_report ~46

Check if the last compaction lost or modified any context entries. Surface discrepancies to the user before proceeding.

NameTypeReqDescription
project_dirstringAbsolute path to another project to check

No output schema declared.

No examples provided.

get_context ~203

Retrieve relevant project context ranked by relevance within a token budget. Pass an id to fetch a single entry at full fidelity.

NameTypeReqDescription
beforestringEntries verified/created strictly before this ISO date.
idstringFetch a single entry by ID (e.g. 'dec-001')
include_relatedbooleanAlso pull entries linked via related_to (depth 1). Default: true.
project_dirstringAbsolute path to another project to read context from
querystringFree-text description of what you're working on
scopestringFile or module path to focus on
sincestringEntries verified/created on or after this ISO date.
tagsarrayFilter to entries with any of these tags
token_budgetintegerMax tokens to return (default: from config)
typesarrayLimit to specific entry types. Default: all.

No output schema declared.

No examples provided.

get_project_summary ~82

The single orienting call for conversation start: counts by kind and status, active constraints (compact), recent decisions, the full id list, and the human-readable summary — all in one response.

NameTypeReqDescription
project_dirstringAbsolute path to another project to summarize
token_budgetintegerMax tokens for the summary (default: 2000)

No output schema declared.

No examples provided.

import_snapshot ~64

Import the committed .context-keeper/memory.json.gz snapshot into the working store. Non-destructive: a store that already has entries is left untouched. Runs automatically on first use when the store is empty.

NameTypeReqDescription
project_dirstringAbsolute path to the target project.

No output schema declared.

No examples provided.

mirror ~79

Sync entries with the remote store. op='pull' merges remote entries into local (newest wins); op='backfill' pushes all local entries to remote (upsert). No-op if remote unconfigured.

NameTypeReqDescription
opstringyespull = remote→local merge; backfill = local→remote push.
project_dirstring

No output schema declared.

No examples provided.

prune_stale ~69

Find entries not verified in N days. Returns them for review — does not delete. Call periodically to keep context fresh.

NameTypeReqDescription
daysintegerEntries not verified in this many days are flagged (default: from config)
project_dirstringAbsolute path to another project to prune

No output schema declared.

No examples provided.

query_entries ~354

Structured field filter — exact AND-combined predicates, NOT relevance search. Use when you know the field values (e.g. absolute constraints scoped to 'hooks/'). Stable ID order, no ranking; empty is a real answer. Includes superseded/deprecated unless you filter status.

NameTypeReqDescription
beforestringVerified/created strictly before this ISO date.
hardnessstring|arrayConstraint hardness absolute/advisory (string or list).
kindstring|arraySingular alias for `types`. `types` wins if both given.
limitintegerCap entries returned (matched_entries reports the total).
originstring|arrayuser/agent/import (string or list). Missing counts as 'agent'.
project_dirstringAbsolute path to another project to query.
scopestringExact, case-sensitive match on a constraint's scope (e.g. 'hooks/').
sincestringVerified/created on or after this ISO date.
statusstring|arrayactive/superseded/deprecated (string or list).
superseded_bystringEntries replaced by this id (superseded_by == id).
supersedesstringThe entry that superseded this id.
tags_allarrayEntries with ALL of these tags.
tags_anyarrayEntries with AT LEAST ONE of these tags.
textstringFree text over text fields; every term must appear (AND, substring).
token_budgetintegerMax tokens returned (default from config).
typesarrayRestrict to these entry types. Default: all.

No output schema declared.

No examples provided.

record_entry ~438

Unified write tool: record a decision, constraint, or pipeline. Required fields by kind (validated server-side): decision needs summary/problem/why_chosen; constraint needs rule/reason; pipeline needs name/purpose/steps.

NameTypeReqDescription
alternativesarraydecision: options considered and why rejected.
constraintsarraypipeline: rules that apply.
constraints_createdarraydecision: new constraints this introduces.
enforced_bystringconstraint: test/command that checks it (named, never run).
hardnessstringconstraint: absolute vs advisory.
kindstringyesWhich kind of entry to record.
namestringpipeline: name.
originstringwho authored this (default agent).
problemstringdecision: what forced it. Min 40 chars.
project_dirstringAbsolute path to the target project. Creates .context/ if needed.
purposestringpipeline: why it exists. Min 40 chars.
reasonstringconstraint: why it exists. Min 40 chars.
related_toarrayids of related entries; get_context traverses these.
retrieval_hintsarray2-4 alternate phrasings for retrieval.
rulestringconstraint: the rule, imperative.
scopestringconstraint: 'global' or a file/module path.
stepsarraypipeline: ordered steps.
summarystringdecision: what was decided (1-2 sentences).
supersedesarraydecision: ids of prior decisions this replaces.
tagsarraytags for retrieval.
tradeoffsstringdecision: what was given up. Encouraged.
triggering_incidentstringconstraint: the incident behind it.
what_we_triedstringdecision: prior attempts. Encouraged.
when_to_invokestringpipeline: triggers. Encouraged.
why_chosenstringdecision: the reasoning. Min 60 chars.

No output schema declared.

No examples provided.

reload_constraints ~53

Re-surface the project's constraints only (not the full store) when a long session has buried the ones injected at start. Same block as session start.

NameTypeReqDescription
project_dirstringAbsolute path to the target project.

No output schema declared.

No examples provided.

update_entry ~90

Update an existing decision, pipeline, or constraint by ID. Refreshes verified_at timestamp automatically.

NameTypeReqDescription
idstringyesEntry ID (e.g. 'dec-001', 'pipe-003', 'con-012')
project_dirstringAbsolute path to another project whose entry should be updated
updatesobjectyesFields to update. Any field except id and created_at.

No output schema declared.

No examples provided.

verify_quality ~73

Scan entries for quality issues (legacy schema, thin reasoning, missing tags, isolated entries) and return them for enrichment via update_entry.

NameTypeReqDescription
min_reason_charsintegerBelow this length, flag the entry as thin (default: 80)
project_dirstringAbsolute path to another project to verify

No output schema declared.

No examples provided.