Skip to content

feat(tools): restore list_properties#56

Merged
AlexMost merged 2 commits into
mainfrom
restore-list-properties
Jul 6, 2026
Merged

feat(tools): restore list_properties#56
AlexMost merged 2 commits into
mainfrom
restore-list-properties

Conversation

@AlexMost

@AlexMost AlexMost commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Why

v11.0.0 removed list_properties, pointing callers at get_vault_overview. That replacement truncates properties to the top 30 by count — silently dropping the rare, one-off, and misspelled keys that a downstream vault-health property-consistency sweep exists to find. The audit use case has no MCP-visible substitute and currently blocks that consumer's 10.1.0 → 12.x migration. The capability never left the codebase: provider.listProperties() was kept in v11 because get_vault_overview depends on it.

What

  • Restore list_properties as a near-verbatim revert of the v10 wrapper, mirroring list_tags: shared vault param, multi-vault fan-out, { vault, results: [{name, count}] }, sorted count-desc, no cap.
  • Encode the orientation-vs-audit split in descriptions: list_properties promises the complete inventory and names the consistency-audit use case; get_vault_overview marks its property list as top entries only and points at list_properties.
  • Server instructions, README, and docs/guide/reading-and-modifying.md updated to match.
  • OpenSpec change restore-list-properties included (brainstorm → proposal → design → delta spec → tasks → plan). The delta spec renames/rewrites the mcp-tool-surface requirement that mandated the tool's absence.
  • Drive-by: corrects the stale 12.0.0 changelog note claiming lexical_matches is "always []" — the lexical leg went live within that same release, and the stale footer already misled a consumer's upgrade review.

read_property and get_stats stay removed — the consumer confirmed both replacements are acceptable.

Additive, non-breaking → lands as 12.1.0.

Verification

  • npx tsc --noEmit clean
  • npm run lint clean
  • npx vitest run — 748/748 green (registration tests updated 10 → 11 operations tools, 13 → 14 combined; new description test pins the full-inventory promise)
  • npx openspec validate restore-list-properties — valid

🤖 Generated with Claude Code

AlexMost and others added 2 commits July 6, 2026 23:30
The 12.0.0 breaking-change note said lexical_matches is 'always []
until the lexical leg is wired up' — true for the commit that
introduced the key, but the leg was wired live by later commits in
the same release (262bfeb, cd214c4). The stale footer was aggregated
verbatim into the release notes and already misled a downstream
consumer's upgrade review.

Co-Authored-By: Claude Fable 5 <[email protected]>
v11.0.0 removed list_properties, delegating property enumeration to
get_vault_overview. That delegation is lossy: the overview truncates
to the top 30 properties by count, silently dropping the rare and
one-off keys — exactly what a downstream vault-health
property-consistency sweep audits. The capability itself never left:
provider.listProperties() was kept for get_vault_overview.

Restore the tool as a near-verbatim revert of the v10 wrapper,
mirroring list_tags (vault param, multi-vault fan-out,
{ vault, results: [{name, count}] }). Descriptions on both
list_properties and get_vault_overview now state the
orientation-vs-audit split so agents route correctly. read_property
and get_stats stay removed — their replacements are confirmed
acceptable.

Includes the OpenSpec change (openspec/changes/restore-list-properties)
with a delta spec renaming the mcp-tool-surface requirement that
mandated the tool's absence.

Co-Authored-By: Claude Fable 5 <[email protected]>
@AlexMost
AlexMost merged commit 358ac99 into main Jul 6, 2026
2 checks passed
@AlexMost
AlexMost deleted the restore-list-properties branch July 6, 2026 21:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant